2017-03-03 93 views
0

的价值观我,其中有一个微调和按钮主要活动。微调器包含四个项目:项目1,项目2,项目3,项目4.加载此活动时,默认选择项目1。在点击按钮,新的活性(活性2)被称为是这样的:安卓:保留以前的活动

Intent intent = new Intent(getApplicationContext(), Activity2.class); 
startActivity(intent); 

活性2在操作栏这样的后退按钮:

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

现在,假设我选择第3项在主要活动并点击按钮。活动2打开。现在,当我在操作栏中按BACK按钮时,主要活动打开,但项目3未保留在微调器中。旋转器包含第1项。

当我调试,我发现被按下活动2的背面按钮时的主要活动的onCreate方法被调用。这意味着我的主要活动正在死亡。

问题:如何在主要活动中将项目3保留在微调框中?

+0

看看捆绑类怎么会可能会帮助 – RamanSB

+0

@PavneetSingh - 机器人:launchMode =“singleTop”它的工作:)。这背后的逻辑是什么? – Daniel

回答

1

@PavneetSingh评论,我在AndroidManifest.xml文件中像这样设置launchModesingleTop为在MainActivity:

<activity android:name=".MainActivity" 
     android:launchMode="singleTop"> 
</activity> 

它的工作。现在,当我在微调选择任何值,按下按钮并移动到下一个活动,请在该活动的后退按钮再次来到主要活动,微调的值会被保留。这正是我所需要的。

0

您可以使用束传递从一个活动值到另一个:

Intent intent = new Intent(context, YourActivity.class); 
intent.putExtra(KEY, <your value here>); 
startActivity(intent); 

你的其他活动,然后

Intent intent = getIntent(); 
if (null != intent) { //Null Checking 
    String StrData= intent.getStringExtra(KEY); 
    int NoOfData = intent.getIntExtra(KEY, defaultValue); 
    boolean booleanData = intent.getBooleanExtra(KEY, defaultValue); 
    char charData = intent.getCharExtra(KEY, defaultValue); 
} 

编辑

如果你想保留当“返回”时的值,你应该做的是在没有完成当前活动的情况下开始活动。这会将新活动添加到堆栈。让我们看看这个有序的方式:

  1. 你的微调是在活动1
  2. 用户设置与信息的微调。你没有完成活动1
  3. 用户做一些事情的活性2启动活性2 ;并点击一个按钮,触发回到Activity1。要回到Activity1,您应该只在Activity2中使用finishActivity()。这将使Activity1的状态回到屏幕。

由于您使用的DisplayHomeAsEnabled,你的代码看起来应该是这样结束活动时:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    if (item.getItemId() == android.R.id.home) { 
     finish(); 
    } 

    return super.onOptionsItemSelected(item); 
} 
+0

感谢您的回答,但我问别的东西。我想,当我回到我以前的活动,微调应保留其原来的值。 – Daniel

+0

我道歉,请我更新的答案。 – Waclock