我在Activity C中有三个片段,它们表现为制表符。我必须从一个片段转到一个新的Activity X.现在我想回到Activity X的片段。
我已经覆盖onBackPressed,但不知道如何从Activity返回fragment / not fragmentActivity。
如果我想回到另一个活动的活动,我会在后退时覆盖并使用意图调用该活动...
我想做这样的事情..这段代码是为了回到之前的活动
@Override
public void onBackPressed()
{
Intent intent = new Intent(CurrentActivity.this,ActivityYouLikeToGo.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
}
先谢谢..
答案 0 :(得分:5)
首先,覆盖背面按以转到片段所在的活动: -
@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();
}
}
答案 1 :(得分:4)
您可以添加TAG(基本上是片段的字符串名称),然后使用findFragmentByTag().
加载片段
findFragmentByTag()
的Google文档为here。
或者您也可以addToBackStack()
从FragmentTransaction
调用片段,文档链接here。
来自谷歌文档:
“通过调用addToBackStack(),替换事务被保存到 返回堆栈,以便用户可以反转事务并将其恢复 按“返回”按钮可以显示上一个片段。“
答案 2 :(得分:4)
最简单的方法:
@Override
onBackPressed(){
finish();
}
答案 3 :(得分:1)
从片段开始活动时,片段从未被杀死, 您可以通过finish()终止当前活动,简单地返回片段; 就像从片段中打开活动并按返回按钮时一样 您跳到片段而不会丢失数据。
答案 4 :(得分:0)
如果我想回到一个活动到另一个活动,我覆盖 后退并使用意图调用actvity
通常情况下,如果你想回去,你就不必做某事。按设备的硬件后退按钮将转到上一个活动,并且已打开相应的选项卡。
答案 5 :(得分:0)
您可以使用startActivityForResult()启动要导航到的活动,然后在返回上一个活动时设置结果。在您要返回的活动中,根据结果代码显示片段。您可以通过隐藏您不想显示的所有片段来完成此任务。即使你要从另一个片段转到另一个活动,这也可以工作。
答案 6 :(得分:0)
在您从片段开始的活动中,您可以执行以下操作:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//do whatever you want here
finish();
return true;
}
这对我有用:)
答案 7 :(得分:0)
此代码适用于我的情况。我只是在按钮上创建一个Onclick方法。代码如下:我在Button中创建了onclick方法clickForFriends,Id是backFriendsList,而我使用的是android.support.v4.app.Fragment类。这个方法应该从新的Activity中取回来自Activity的片段,这个方法应该在onCreate方法之后的Activity中
public void clickedForFriends(View v){
if (v.getId() == R.id.backFriendsList){
onBackPressed();
}
}
答案 8 :(得分:0)
@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);
}
}
如果该片段中有操作栏,则可以在Activity中onBackPressed()
上检查包含类似方法的操作栏标题。
答案 9 :(得分:-1)
viewPager.setCurrentItem(tabPosition);
这个解决方案对我来说很奇怪。