android:launchMode="singleTask"和startActivityForResult的疑惑

ud_miser 2011-05-03 04:51:42
1.首先,我在AndroidManifest.xml中为ActA这个Activity添加一个android:launchMode="singleTask"
2.我需要在ActA中弹出一个菜单,调用AlertDialog.Builder相关方法及对象
3.选择某个弹出菜单项,调用
Intent intent = new Intent();
intent.setClass(ActA.this, ***.class);
startActivityForResult(intent, 0);
4.每次调用startActivityForResult后都会自动调用onActivityResult方法,这个并非我想要的

我移除android:launchMode="singleTask",然后发现调用startActivityForResult后不会再调用onActivityResult方法
对此我明白为什么,求解
...全文
586 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
My_le 2012-08-16
  • 打赏
  • 举报
回复
楼上的答案很正确。
ud_miser 2011-05-06
  • 打赏
  • 举报
回复
哦 我发现问题了,是目标activity加了android:launchMode="singleTask"
ud_miser 2011-05-06
  • 打赏
  • 举报
回复
非常感谢上面2位朋友的回复,我刚刚尝试了下 确实没有这个问题,可能当时加了别的什么东西导致
ameyume 2011-05-04
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 prince58 的回复:]

引用 4 楼 ameyume 的回复:

每次调用startActivityForResult后都会自动调用onActivityResult方法
这个和android:launchMode="singleTask"没关系吧


不是每次调用startActivityForResult就会自动调用onActivityResult的,是在被调用的activity end时或是直接发set……
[/Quote]
嗯,明白了。
拷贝的楼主的原话,太大意了。像你说的,只有被调用的activity结束时或者设置setResult时才会调用onActivityResult方法
prince58 2011-05-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ameyume 的回复:]

每次调用startActivityForResult后都会自动调用onActivityResult方法
这个和android:launchMode="singleTask"没关系吧
[/Quote]

不是每次调用startActivityForResult就会自动调用onActivityResult的,是在被调用的activity end时或是直接发setResult才会调用onActivityResult。

你可以自己调试看看。
prince58 2011-05-04
  • 打赏
  • 举报
回复
因为不清楚你的CreateProductActivity是怎么写的,不过我在CreateProductActivity按home键,然后再长按home键进入ActA 加了 android:launchMode="singleTask" 的就会出现你所说的问题。

因为singleTask的关系,这个时候CreateProductActivity被Destroy了。
ameyume 2011-05-04
  • 打赏
  • 举报
回复
每次调用startActivityForResult后都会自动调用onActivityResult方法
这个和android:launchMode="singleTask"没关系吧
prince58 2011-05-04
  • 打赏
  • 举报
回复
我试了一下,加不加android:launchMode="singleTask"都没有你所说的问题。

你可以看看这两个地方的代码是不是有什么问题。
CreateProductActivity
//gotoAlterSelected(SUN_CREATE_PRODUCT,CreateProductActivity.class);
ud_miser 2011-05-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 prince58 的回复:]

最好把代码帖出来吧。
[/Quote]


Java代码

public class ActA extends Activity{

@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.t);

Button t_button = (Button)findViewById(R.id.t_button);
t_button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
final CharSequence[] items = {"从产品库选择", "制定产品名称", "从最近使用中选择"};

AlertDialog.Builder builder = new AlertDialog.Builder(TestActivity.this);
builder.setTitle("选择产品");
builder.setPositiveButton("取消",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
dialog.cancel();
switch(item){
case 0:

break;
case 1:
Intent intent = new Intent();
intent.setClass(TestActivity.this, CreateProductActivity.class);
TestActivity.this.startActivityForResult(intent, 0);

//gotoAlterSelected(SUN_CREATE_PRODUCT,CreateProductActivity.class);
break;
case 2:break;
}
}
}).show();
}
});
}

@Override
protected void onActivityResult(int requestCode, int resultCode,Intent intent){
super.onActivityResult(requestCode, resultCode, intent);
if (resultCode != RESULT_OK) return;
}

}

配置文件代码

<activity android:name=".ActA" android:launchMode="singleTask" android:screenOrientation="portrait">

prince58 2011-05-03
  • 打赏
  • 举报
回复
最好把代码帖出来吧。

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧