我有3个课程,我们称之为1,2和3。
Class 1扩展了TabActivity并组织了整个标签,Class 2和3只是两个单独的标签,每个标签都带有一些文本行。我使用startActivityForResult从另一个活动调用Class 1。
然后我在第2课中添加了optionsMenu,当用户点击optionMenu时,会执行以下代码:
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
Intent i = new Intent();
switch(item.getItemId()) {
case Result.NEXT_ID:
i.putExtra(Result.PAGE_REQUEST, NEXT);
setResult(RESULT_OK, i);
finish();
break;
case Result.PREV_ID:
i.putExtra(Result.PAGE_REQUEST, PREV);
setResult(RESULT_OK, i);
finish();
}
return super.onMenuItemSelected(featureId, item);
}
在我的父类(开始时调用1的类)中,在onActivityResult函数中,我想从附加内容中获取数据。但是,意图始终为空,我无法弄清楚原因。
当我在类2上调用finish()时,是否在类1中调用其他函数?我是否必须以某种方式传输意图数据?
这是startactivityforresult,结果是Class 1
private void getResult(String result) {
Intent i = new Intent(this, Result.class);
i.putExtra(RESULT, result);
i.putExtra(PAGE, curr_start_page);
startActivityForResult(i, 0);
}
我也尝试将optionmenu方法放在Class 1中,但是,当我调用finish()时,它什么也没做。
编辑:
我认为我应该将选项菜单放在第1类中,因为我在startActivityForResult中启动了第1类。但是如何退出选项卡布局?在类1中调用finish()似乎没有办法。
答案 0 :(得分:1)
我得到了它。在class 2的optionsmenu方法中,我需要做
this.getParent().setResult(RESULT_OK, i);
然后调用finish(),它可以正常工作。
答案 1 :(得分:0)
在第1课中,覆盖onActivityResult并通过对所收到的任何内容执行setResult
来实现它。
看看是否有效。
您正尝试从2到1的父级发送值。但是当第2阶段结束时,它只是将它的值发送到第1类。我不认为第1类将这个值返回给它的调用者。