how to call Activity class from Fragment

霸气de小男生 提交于 2019-12-08 08:28:10

问题


I am working with Navigation Drawer and i want to call testActivity.java class when someone click on a item that is in the sliding menu.Currently my MainActivity.java calss is calling to the FragmentOne,FragmentTwo,FragmentThree when sliding menu item selected..I want to replace this with testActivity.java

here is my MainActivity.java

 public class MainActivity extends FragmentActivity {
final String[] data ={"one","two","three"};
final String[] fragments ={
        "core.layout.FragmentOne",
        "core.layout.FragmentTwo",
        "core.layout.FragmentThree"};
@Override
protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);

     ArrayAdapter<String> adapter = new ArrayAdapter<String>    (getActionBar().getThemedContext(), android.R.layout.simple_list_item_1, data);

     final DrawerLayout drawer = (DrawerLayout)findViewById(R.id.drawer_layout);
     final ListView navList = (ListView) findViewById(R.id.drawer);
     navList.setAdapter(adapter);
     navList.setOnItemClickListener(new OnItemClickListener(){
             @Override
             public void onItemClick(AdapterView<?> parent, View view, final int pos,long id){
                     drawer.setDrawerListener( new DrawerLayout.SimpleDrawerListener(){
                             @Override
                             public void onDrawerClosed(View drawerView){
                                     super.onDrawerClosed(drawerView);
                                     FragmentTransaction tx = getSupportFragmentManager().beginTransaction();
                                     tx.replace(R.id.main, Fragment.instantiate(MainActivity.this, fragments[pos]));
                                     tx.commit();
                             }
                     });
                     drawer.closeDrawer(navList);
             }
     });
     FragmentTransaction tx = getSupportFragmentManager().beginTransaction();
     tx.replace(R.id.main,Fragment.instantiate(MainActivity.this, fragments[0]));
     tx.commit();
}

}

here is my FragmentOne.java calss..All other FragmentTwo and FragmentThree.java classes having same code like this.

      public class FragmentOne extends Fragment {


public static Fragment newInstance(Context context) {
    FragmentOne f = new FragmentOne();

    return f;
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
   ViewGroup root = (ViewGroup) inflater.inflate(R.layout.fragment_one, null);

    View view = inflater.inflate(R.layout.fragment_one,container, false);

   return root;


}

}

This is my testActivity.java class

   public class testActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.test);


}

}


回答1:


In fragment you can access its parent FragmentActivity instance using getActivity(). And since that instance is an activity, so using that you can call another activity simply.

Intent myIntent = new Intent((ParentActivity)getActivity(), YourOtherActivity.class);
(ParentActivity)getActivity().startActivity(myIntent); 


来源:https://stackoverflow.com/questions/18524538/how-to-call-activity-class-from-fragment

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!