我的应用程序中有两个活动。Activity1 有一个列表视图和两个按钮(比如 button1 和 button2)。根据用户单击哪个按钮,列表视图中的内容会相应更改。活动的默认加载是让 button1 单击活动 1 中加载的内容。在我的 Activity2 中,我有一个按钮(比如 button3),当点击它时,它必须加载 Activity1,但列表视图加载了 button2 点击结果,而不是显示 button1 点击结果的默认显示。关于如何实现这一点的任何帮助?在 activity2 中 button3 的 onclick 事件上,我可以加载 activity1 ,但这将加载显示 button1 点击结果的默认状态。
4 回答
从第二个活动发送带有标志的 Intent。在第一个活动中,请始终注意此标志并相应地触发您的第二个按钮代码。作为参考,您可以在此处或谷歌搜索“在活动之间传递数据”。
在活动之间切换时,通过使用 IntentHandler 传递一个额外的字符串来保存 ListView 的状态:
Intent intent = new Intent(getBaseContext(), yourActivity.class);
intent.putExtra("LISTVIEW_STATE", myListViewState);
startActivity(intent);
然后在您接收活动的 onCreate() 方法(在本例中为 yourActivity)中,您可以通过以下方式获取状态:
Intent intent = getIntent();
String recievedListViewState = intent.getStringExtra("LISTVIEW_STATE");
您可以通过在 Intent 上添加 Extras 来做到这一点。现在,当您从 Activity2 启动 Activity1 时,您的代码可能如下所示:
Intent intent = new Intent(Activity2.this, Activity1.class);
startActivity(intent);
您可以使用 Intent 上的putExtra()
方法在此 Intent 上设置一个键值对(称为额外),使其看起来像这样。
Intent intent = new Intent(Activity2.this, Activity1.class);
intent.putExtra("LIST_TO_DISPLAY", "LIST_2");
startActivity(intent);
(键)的第一个参数putExtra()
始终是字符串,第二个参数(值)可以是许多不同的数据类型。这也是一个字符串。
一旦 Activity1 启动,您可以通过使用来获取 Intent,getIntent()
然后从中提取额外的内容,全部在onCreate()
.
protected void onCreate(Bundle b)
{
Intent intent = getIntent();
String whichList = intent.getStringExtra("LIST_TO_DISPLAY"); //which List now equals "LIST_2"
if( whichList != null && "LIST_2".equals(whichList) )
{
//Set up List 2
}
else
{
//Set up the default list
}
}
这是 Intent Class 的文档。您可以找到所有 put 和 get Extra 方法的说明,以及一些其他信息,这些信息在您想要自定义启动活动的行为方式时可能会有所帮助。
我不明白,所以你会想到几件事。
...
Activity1 -> Button1 -> 列表视图(内容 A)
Activity1 -> Button2 -> ListView(内容 B)
Activity1 -> Activity2 -> Button3 -> Activity1 -> ListView(内容 B)
所以你可以
在活动1
开始活动(intentActivity2);
在活动2
intentResult.putExtra("cmd", "button3"); onbutton 点击 setResult(RESULT_OK,intentresult) 并完成
回到活动1
onActivityResult resultIntent.getExtra("cmd")