Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Open a fragment of an activity from another activity

Hi All I want to open the "Text-To-Speech output" fragment of Settings from my application. I think first I need to open the settings activity and then its fragment. I tried setting the ComponentName but it was unable to locate the activity.

Should I use FragmentManager; I couldn't find anything specific to my needs. Can somebody give me some link which might explain it well.

like image 353
Harsh Vardhan Avatar asked May 30 '13 12:05

Harsh Vardhan


People also ask

How do I open a specific fragment from another activity?

intent = new Intent(context, MainFragment. class); context. startActivity(intent);

Can we navigate from activity to fragment?

Move activity logic into a fragment With the fragment definition in place, the next step is to move the UI logic for this screen from the activity into this new fragment. If you are coming from an activity-based architecture, you likely have a lot of view creation logic happening in your activity's onCreate() function.

Can a fragment reuse in multiple activities?

Yes you can, but you have to add more logic to your fragments and add some interfaces for each activity.


2 Answers

You are right, First You need to start the Activity than set the current Fragment in FragmentPager / Manager... Their is no such way to start some foreign fragment from your Activity that would be dangerous see that will lead to zombie fragments floating around the App (or May be I am not aware of that..)

  1. You call the Activity Intent with some parameter for the Fragment name, you want to start i.e. interger, boolean etc...

      Intent intent = new Intent(this,SecondActivity.class);
      intent.putExtra("fragmentNumber",1); //for example    
      startActivity(intent);
    
  2. You check the passed value inside OnCreate of the Second Acitivty and set the desired fragment on top.. inside OnCreate

     if(getIntent().getIntExtra("fragmentNumber",0)==1){
       //set the desired fragment as current fragment to fragment pager
      }
    

However, I am not getting the problem "It was unable to locate the activity." Have you entered the Activity in manifest file than what was the problem you were facing? Please post the full stack trace.

like image 89
Amit Avatar answered Sep 27 '22 00:09

Amit


You can use the following:

Intent ttsSettings = new Intent("com.android.settings.TTS_SETTINGS");
ttsSettings.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(ttsSettings);
like image 32
ozbek Avatar answered Sep 24 '22 00:09

ozbek