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

Android 如何从对话框重定向到片段,android,android-fragments,android-intent,Android,Android Fragments,Android Intent,我有一个警报对话框,如果用户没有警报,则将用户发送到警报部分,对话框和警报部分处于相同的活动中,但片段不同 我的对话框来自LifeFragment.java和alarmsfragment.java上的alarmsfragment 如何将用户发送到另一个片段 更新 在此,我告诉活动从何处开始: tabs.setViewPager(pager); pager.setCurrentItem(2); 我必须这样做 Intent myIntent = new Intent(v.g

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

我的对话框来自LifeFragment.java和alarmsfragment.java上的alarmsfragment

如何将用户发送到另一个片段

更新

在此,我告诉活动从何处开始:

    tabs.setViewPager(pager);
    pager.setCurrentItem(2);    
我必须这样做

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

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


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

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

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

1。从对话框中激发活动(如果未激发allready else添加标志):

定义新的意图 在活动中定义额外的键

加上你想展示的片段

火灾意图 二,。活动加载时:

在活动中定义: 在onCreatesavedInstanceState中获取额外的意图 设置viewpager[findview,设置viewpager上的适配器,例如设置带有viewpager的表格布局等] 三,。在托管活动中通过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);
您可以使用整数值而不是字符串额外值,并直接在寻呼机上使用它

这里有详细的例子:

一,。从对话框中激发活动(如果未激发allready else添加标志):

定义新的意图 在活动中定义额外的键

加上你想展示的片段

火灾意图 二,。活动加载时:

在活动中定义: 在onCreatesavedInstanceState中获取额外的意图 设置viewpager[findview,设置viewpager上的适配器,例如设置带有viewpager的表格布局等] 三,。在托管活动中通过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);
您可以使用整数值而不是字符串额外值,并直接在寻呼机上使用它

这里有详细的例子:


没有重定向到片段这样的事情——您重定向到一个活动。该活动显示了片段。我是有意尝试的,但如果我发送到AlarmsFragments,应用程序将冻结。我知道你想从dialog打开centairn片段吗?您的片段是通过viewpager管理的吗?你使用FragmentPagerAdapter或状态适配器吗?是的,im在ViewPager中管理,因此现在取决于你的活动是否已加载,或者你的主机活动是否已加载碎片allready。没有重定向到碎片这样的事情-你重定向到一个活动。该活动显示了片段。我是有意尝试的,但如果我发送到AlarmsFragments,应用程序将冻结。我知道你想从dialog打开centairn片段吗?您的片段是通过viewpager管理的吗?u使用FragmentPagerAdapter或状态适配器?是,通过ViewPager管理im,因此现在取决于您的活动是否已加载,或者您的主机活动是否已加载片段allready或not@stefano-siano但如果未准备就绪,则首先需要启动活动如果我将用户发送到HomeCreenactivity并传递pagerviewpager id?这正是你应该做什么。创建intent并将数据pager id放入Bundle对象中,只需调用intent对象的putExtra方法之一,然后在活动的onCreate方法中,您读取数据分页器id,并在此基础上显示所需的片段。@stefano siano但您首先需要启动活动,如果它未准备就绪启动如果我将用户发送到HomeCreenactivity并传递pagerviewpager id?这正是您应该做的。创建intent,将数据pager id放入Bundle对象中,只需调用intent对象的putExtra方法之一,然后在活动的onCreate方法中读取数据pager id,并在此基础上显示所需的片段。
context.startActivity(intent);
public static String STRING_KEY = "myKey";
public static String VALUE1 = "fragment1";
public static String VALUE2 = "fragment2";
private String _extra;
private int _fragmentNumber;
if(savedInstanceState != null) {
     _extra = getIntent().getStringExtra(STRING_KEY); // or IntegerExtra(key)
  }
ViewPager pager = (ViewPager) findViewById(R.id.pager);
pager.setAdapter(Adapter);
// 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);