如何从另一个活动android打开片段

时间:2018-03-11 14:12:09

标签: java android android-fragments android-intent android-activity

我正在尝试使用startactivityfromfragment() 我没有找到一些有用的东西让我成为一个很好的例子 直到现在我能够将数据(web url的字符串)从片段移动到片段 现在它是一个不同的故事..我想我需要使用startactivityfromfragment().. 但不知道如何

Bundle bundle = new Bundle();
                bundle.putString("WEB","someweb.com");
                MultiFragment multiFragment = new MultiFragment();
                multiFragment.setArguments(bundle);
                Intent intent1 = new Intent(getBaseContext(), MultiFragment.class);
                startActivityFromFragment(MainActivity.class,intent1,"WEB");

4 个答案:

答案 0 :(得分:4)

试试这个: 将此代码放在您要打开活动的当前片段中。

 Intent i=new Intent(getActivity(),Multifragment.class);
    i.putExtra("key","value");
    getActivity().startActivity(i);

在下一个包含片段的活动中,输入以下内容:

String value=getIntent().getStringExtra("key");
Bundle bundle=new Bundle();
bundle.putString("key",value);
YourFragmentClass ob=new YourFragmentClass();
ob.setArguments(bundle);
getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.your_container_layout,ob).addToBackStack(null).commit();

然后,在YouFragmentClass中:

Bundle=getArguments();
if(bundle!=null}
String value=bundle.getString("key");

答案 1 :(得分:0)

使用您的活动名称作为存在MultiFragment的第二个参数

            Intent i = new Intent(MainActivity.this, ActivityName.class);
                       putExtras(bundle);
                        startActivity(i);
                        finish();

答案 2 :(得分:0)

方法1

为了将数据从活动发送到另一个活动的片段,请使用包值调用正常意图,在另一个活动中检查getIntent()并从该片段调用方法

Intent intent = new Intent(this, MainActivity.class);
intent.putExtra("web_url", "url");
startActivity(intent);

并从另一项活动致电

String webUrl = getIntent().getStringExtra("web_url");
Fragment newFragment = getSupportFragmentManager().findFragmentById(R.id.frame_tab);
newFragment.openWeb(webUrl);

方法2 在第二个活动中创建一个静态变量并保存来自getIntent()的数据,并在片段中使用该变量。

Mehtod 3

    interface FragmentListner{
    void openFragment(String url);
}

活动A:

    FragmentListner frag = new FragmentListner();
    frag.openFragment("Url");

活动B:

class B implements FragmentListner{

void openFragment(String url){
//Open Fragment here
}

答案 3 :(得分:0)

我认为:

在不包含片段的活动中:

Intent intent = new Intent(ActivityA.this, ActivityB.class);
                    intent.putExtra("something", "yep");
                    startActivity(intent);

并且,在包含片段的下一个活动中:

Intent intent = getIntent();
String op = intent.getStringExtra("something");
if (op != null){
   getSupportFragmentManager().beginTransaction().replace(R.id.nav_host_fragment,
         new YourFragment()).addToBackStack(null).commit();
}