Creating a link to an Activity with a TextView

android, android-activity, textview

Solution

You want to do two things. First, you want to have something happen upon the click of a `TextView`. Second, you want to launch a new `Activity`.

To accomplish the first thing, in your activity class' `onCreate` method, you want something like:

final TextView txtView = this.findViewById(R.id.txtView);
txtView.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        ...
    }
});

To then accomplish the second thing, if the `Activity` you want to launch is called `DirectionActivity`:

final TextView txtView = this.findViewById(R.id.txtView);
txtView.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        MainMenuActivity.this.startActivity(new Intent(MainMenuActivity.this, DirectionActivity.class));
    }
});

Problem

I have an `Activity` called `MainActivity.java`, with an `activity_main.xml` file. But I don't know how to create a link that will launch another activity called `DirectionActivity`. Below is a sample of my code. strings.xml ``` <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">EEMA</string> <string name="action_settings">Settings</string> <string name="hello_world">The Emergency Evacuation Mobile App!</string> <string name="directions">\n\nTo view directions click here!</string> <string name="title_activity_direction">DirectionActivity</string> <string name="title_activity_main">MainActivity</string> </resources> ``` activity_main.xml textview ``` <TextView android:id="@+id/txtView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" android:textSize="12sp" android:textColorLink="#FFFF00" android:textStyle="bold" /> ``` MainActivity.java ``` public class MainMenuActivity extends Activity { public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_menu); String str = "Please click here to view Directions"; TextView txtView = (TextView) findViewById(R.id.txtView); txtView.setText(str); Linkify.addLinks(txtView, Linkify.ALL); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main_menu, menu); return true; } } ``` DirectionActivity.java ``` public class DirectionActivity extends Activity { @SuppressLint("NewApi") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = getIntent(); String message = intent.getStringExtra(MainMenuActivity.EXTRA_MESSAGE); // Create the text view TextView textView = new TextView(this); textView.setTextSize(40); textView.setText(message); // Set the text view as the activity layout setContentView(textView); setContentView(R.layout.activity_direction); // Make sure we're running on Honeycomb or higher to use ActionBar APIs if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { // Show the Up button in the action bar. getActionBar().setDisplayHomeAsUpEnabled(true); } } } ``` So what is it I need to do to get the Please click here to view Directions to appear as a link that will open the DirectionActivity?

Original source