如何从对话框重定向到片段

时间:2015-07-30 22:32:37

标签: android android-fragments android-intent

我有一个警告对话框,如果用户没有警报将用户发送到警报部分,则对话框和警报部分处于相同的活动但不同的片段

我的对话框来自“LifeFragment.java”和“alarmsfragment on”alarmsfragment.java“

如何将用户发送到其他片段?

更新

有了这个,我告诉活动从哪里开始:

    tabs.setViewPager(pager);
    pager.setCurrentItem(2);    

我必须做这样的事情?:

Intent myIntent = new Intent(v.getContext(),
                        HomeScreenActivity.class);
                myIntent.putExtra("1", ViewPager);

2 个答案:

答案 0 :(得分:3)

<强> 1。来自对话框的火灾活动(如果尚未全部触发,则添加标志):

  • 定义新意图
Intent intent = new Intent(context, Activity.class);
  • 定义活动中额外的键

  • 添加额外的哪个片段你想表现

intent.putExtra(Activity.STRING_KEY, Activity.VALUE);
  • 火意图
context.startActivity(intent);

<强> 2。活动加载时:

  • 在活动定义中:
public static String STRING_KEY = "myKey";
public static String VALUE1 = "fragment1";
public static String VALUE2 = "fragment2";
private String _extra;
private int _fragmentNumber;
  • 在onCreate(savedInstanceState)中得到额外的意图
if(savedInstanceState != null) {
     _extra = getIntent().getStringExtra(STRING_KEY); // or IntegerExtra(key)
  }
  • 设置viewpager [findview,setadapter(在viewpager上),设置例如tablayout with viewpager等]
ViewPager pager = (ViewPager) findViewById(R.id.pager);
pager.setAdapter(Adapter);

第3。通过托管活动中的viewpager更改片段:

(例如,使用if或switch语句收到“额外”)

// if example:
if(_extra != null && _extra == VALUE) {
   // change here fragment
   pager.setCurrentItem(numberOfFragmentToShow)
}

// switch example:
switch(_extra){
case VALUE1:
  _fragmentNumber = 1;
 break;
case VALUE2
  _fragmentNumber = 2
  break;
default: 
 _fragmentNumber = 3;
}

pager.setCurrentItem(_fragmentNumber);

而不是字符串额外值,您可以使用整数值并直接在寻呼机上使用

这里有详细的例子:

<强> Selecting a specified page in ViewPager when starting

答案 1 :(得分:1)

您必须重定向到您的活动,发送一些数据,例如在Bundle中,并根据此数据确定您的活动应显示哪个片段(以及活动是否应该调用片段的某些方法。

意图仅用于启动活动或服务,而不是片段。