Android 返回到活动的片段
我在活动C中有三个片段。它们的行为就像标签一样。我必须从一个片段转到一个新的活动X。现在我想回到活动X的片段 我已按下override On Backpressed,但不知道如何从活动返回fragment/not fragmentActivity 如果我想返回到一个活动到另一个活动,我会在按下back键时覆盖,并使用intent调用该活动 我想做这样的事。。此代码用于返回到以前的活动Android 返回到活动的片段,android,android-intent,android-activity,fragment,Android,Android Intent,Android Activity,Fragment,我在活动C中有三个片段。它们的行为就像标签一样。我必须从一个片段转到一个新的活动X。现在我想回到活动X的片段 我已按下override On Backpressed,但不知道如何从活动返回fragment/not fragmentActivity 如果我想返回到一个活动到另一个活动,我会在按下back键时覆盖,并使用intent调用该活动 我想做这样的事。。此代码用于返回到以前的活动 @Override public void onBackPressed() { Intent inte
@Override
public void onBackPressed()
{
Intent intent = new Intent(CurrentActivity.this,ActivityYouLikeToGo.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
}
提前感谢。您可以添加一个标记(片段的字符串名称),然后使用findFragmentByTag()加载片段。
findFragmentByTag()
的谷歌文档是
或者,您也可以在从FragmentTransaction
,doc链接调用片段时addToBackStack()
。
从谷歌文档:
通过调用addToBackStack(),替换事务将保存到
返回堆栈,以便用户可以反转事务并返回
按“上一步”按钮可查看上一个片段。“
首先,覆盖反压以转到片段所在的活动:-
@Override
public void onBackPressed()
{
Intent intent = new Intent(CurrentActivity.this,ActivityYouLikeToGo.class);
intent.putExtra("Check",1);
startActivity(intent);
}
然后转到ActivityYouLikeToGo.java文件,在onCreate中执行以下操作:-
Intent intent = getIntent();
String s1 = intent.getStringExtra("Check");
if(s1.equals("1"))
{
s1 = "";
Fragment fragment = new YOURFRAMENTNAME();
if (fragment != null) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame_container, fragment).commit();
}
}
如果我想返回到一个活动到另一个活动,我会覆盖它
按back键并使用intent调用该Activity
通常,如果你想回去,你不必做什么。按下设备的“硬件后退”按钮将带您进入上一个活动,相应的选项卡已打开。您可以使用startActivityForResult()启动导航到的活动,然后在返回到上一个活动时设置结果。在要返回的活动中,根据结果代码显示片段。您可以通过隐藏所有不想显示的片段来完成此任务。即使您要从另一个片段转到另一个活动,这也可以工作
viewPager.setCurrentItem(tabPosition);
这个解决方案为我创造了奇迹。在您从片段开始的活动中,您可以执行以下操作:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//do whatever you want here
finish();
return true;
}
这对我很有用:)最简单的方法:
@Override
onBackPressed(){
finish();
}
这段代码适用于我的情况。我只是对按钮做了一个Onclick方法。代码如下:我在按钮中创建了onclick方法clickForFriends,Id是backFriendsList,我使用android.support.v4.app.Fragment类。此方法应该从新活动中提取到启动活动的片段,并且此方法应该在onCreate方法之后的活动中
public void clickedForFriends(View v){
if (v.getId() == R.id.backFriendsList){
onBackPressed();
}
}
当你从一个碎片开始一项活动时,碎片从未被杀死, 您只需通过finish()终止当前活动即可返回片段;, 这就像从一个片段中打开一个活动并按下后退按钮一样 您跳转到片段而没有丢失数据。
如果该片段中有操作栏,则可以在包含类似方法的活动中检查
onBackPressed()
上的操作栏标题。在你的onBackPressed(…)
中,你需要替换或重新附加你以前的片段
我有相同的想法,但不知道如何做。。请分享一些代码示例..显示Arnab答案如下您说的对,但这将帮助我不从堆栈中删除活动。从任何活动中按onBackpressing都会从Stack中删除该活动,这是正确的,我相信它应该是这样的。但是,如果出于某些原因您不希望出现这种行为,那么您可以使用viewPager.setCurrentItem(tabPosition)
打开已打开特定选项卡的活动。因此,您可以在onBackPressed()
中设置一些标志,在活动中检查它,如果设置了标志,则显示相应的选项卡。活动X是我的播放器。我还想保持它的seekbar状态。所以,为了做到这一点,我必须找到一种方法,从活动中返回片段,而不从堆栈中删除它。很高兴为您提供帮助。如果答案对你有用,请接受:尽管这个代码片段可以解决这个问题,包括对代码的解释确实有助于提高你文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满你的代码,这会降低代码和解释的可读性!我认为addToBackStack()可以在碎片之间移动。当从一个碎片回到另一个碎片时/
@Override
public void onBackPressed() {
//Here "digiM" is an Actionbar Title
if(getTitle().equals("digiM") || getSupportActionBar().getTitle().equals("digiM"))
{
//reload the activity if you want to open it again as your need
Intent intent = new Intent(Your_Current_Activity.this,Your_Current_Activity.class);
startActivity(intent);
}
}