Android 如何从对话框重定向到片段
我有一个警报对话框,如果用户没有警报,则将用户发送到警报部分,对话框和警报部分处于相同的活动中,但片段不同 我的对话框来自LifeFragment.java和alarmsfragment.java上的alarmsfragment 如何将用户发送到另一个片段 更新 在此,我告诉活动从何处开始: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
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);