startActivityForResult 没有返回结果

sknice 2011-08-17 05:23:50
如题
...全文
1002 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
积跬步DEV 2012-07-11
  • 打赏
  • 举报
回复
我的用的 singleTask 结果就怎么也得不到值, 后来修改后 ,可以了 。
mylzc 2011-09-01
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 vinda_z 的回复:]

新Activity不能是singleTask、singleInstance。
剩下的跟平时一样。
[/Quote]
楼主检查一下。
sknice 2011-09-01
  • 打赏
  • 举报
回复
这个问题还没有解决,但是帖子要结了,相同问题的另一个帖子没有人回复,http://topic.csdn.net/u/20110817/23/c1588e66-f454-49bd-9e7d-0526e4f24001.html
接分的请进
zfzaizheli 2011-08-27
  • 打赏
  • 举报
回复
给个简单示例,希望对你有帮助
A.java里面


Intent intent = new Intent( A.this, B.class );
startActivityForResult( intent, 1 );

protected void onActivityResult( int requestCode, int resultCode, Intent intent )
{
switch( requestCode )
{
case 1:
String path = intent.getStringExtra( "result" );
//do something
break;

default :
break;
}
}


B.java里面

private OnClickListener btnListener = new Button.OnClickListener()
{
@Override
public void onClick( View v )
{
Intent intent = new Intent();
intent.putExtra( "result",
"test1111" );
B.this.setResult( 1, intent );
B.this.finish();
}
};
sknice 2011-08-26
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 kechanghe0705 的回复:]
新Activity不能是singleTask、singleInstance。
剩下的跟平时一样。
[/Quote]

[Quote=引用 22 楼 kechanghe0705 的回复:]
是不是在项目清单文件里面 将activity里面加了 android:launchMode="singleInstance"
如果是加了这句话,是看不到返回值的,因为在界面启动的时候就调用了一次返回操作,以后就不会再有返回值了
[/Quote]
设置了目标BActivity为singleTask后,在AActivity中调用BActivity,
例如
Intent intent = new Intent(this, BActivity.class);
startActivityForResult(intent, 1);
结果先会调用到 AActivity中的onActivityResult,
而在BActivity设置setResult(Activity.RESULT_OL)后,
AActivity的onActivityResult不会接受到通知。

解决方案:设置BActivity为singleTop.[/Quote]
那个activity的配置很正常,不像你们说的那样配置如下

<activity android:name=".AddNewMusicListActivity" android:theme="@android:style/Theme.Dialog"/>

abc007_C_S_D_N 2011-08-25
  • 打赏
  • 举报
回复
设置了目标BActivity为singleTask后,在AActivity中调用BActivity,
例如
Intent intent = new Intent(this, BActivity.class);
startActivityForResult(intent, 1);
结果先会调用到 AActivity中的onActivityResult,
而在BActivity设置setResult(Activity.RESULT_OL)后,
AActivity的onActivityResult不会接受到通知。

解决方案:设置BActivity为singleTop.
j_f0001 2011-08-25
  • 打赏
  • 举报
回复
是不是在项目清单文件里面 将activity里面加了 android:launchMode="singleInstance"
如果是加了这句话,是看不到返回值的,因为在界面启动的时候就调用了一次返回操作,以后就不会再有返回值了
abc007_C_S_D_N 2011-08-25
  • 打赏
  • 举报
回复
新Activity不能是singleTask、singleInstance。
剩下的跟平时一样。
sknice 2011-08-22
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 wyx100 的回复:]

AppConstant.ReturnCode_AddNewMusicListReturnCode要大于零
[/Quote]
AppConstant.ReturnCode_AddNewMusicListReturnCode 的值是 2
sknice 2011-08-22
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 baodingxiaolang 的回复:]

注意,你的按钮事件中用的getIntent()获取的Intent.和下面的MusicActivity.this.set…根本不是同一个Intent,把上面的也改成MusicActivity.this.getIntent(),祝你好运,手机输入,见谅
[/Quote]
改了也不行,
整个类的代码是这样

package mars.mp3player;
import mars.database.MyDataBaseAdapter;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class AddNewMusicListActivity extends BaseActivity
{
private Button btnOk;
private Button btnCancle;
private EditText txtName;
private Boolean isEdit;
//全局变量保存intent
private Intent intent;
//数据库操作类
private MyDataBaseAdapter myDb;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.addmusiclist);
btnOk=(Button)findViewById(R.id.btnOk_AddMusicList);
btnCancle=(Button)findViewById(R.id.btnCancle_AddMusicList);
txtName=(EditText)findViewById(R.id.txtName_AddMusicList);
btnOk.setOnClickListener(new BtnOKListListener());
btnCancle.setOnClickListener(new BtnCancleMusicListener());
myDb =new MyDataBaseAdapter(AddNewMusicListActivity.this);
myDb.open();
//获取前一个activity(StartAntherActivity)传过来的数据
intent=getIntent();
if(intent !=null)
{
Bundle bd = intent.getExtras();
String strListName = bd.getString("MusicListName");
isEdit=false;
if(!strListName.equals(""))
{
txtName.setText(strListName);
isEdit=true;
}
}
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
if(myDb !=null)
myDb.close();
super.onDestroy();
}
//OK,返回结果
class BtnOKListListener implements OnClickListener
{
@Override
public void onClick(View v)
{
String strListName=txtName.getText().toString();
if(intent !=null)
{
intent.putExtra("strListName",strListName);
AddNewMusicListActivity.this.setResult(RESULT_OK, intent);
}

AddNewMusicListActivity.this.finish();
}
}
//Cancle
class BtnCancleMusicListener implements OnClickListener
{
@Override
public void onClick(View v)
{
finish();
}
}

}



wyx100 2011-08-19
  • 打赏
  • 举报
回复
AppConstant.ReturnCode_AddNewMusicListReturnCode要大于零
北方大冬瓜 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 baodingxiaolang 的回复:]

注意,你的按钮事件中用的getIntent()获取的Intent.和下面的MusicActivity.this.set…根本不是同一个Intent,把上面的也改成MusicActivity.this.getIntent(),祝你好运,手机输入,见谅
[/Quote]

+2
hanger1212 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 baodingxiaolang 的回复:]

注意,你的按钮事件中用的getIntent()获取的Intent.和下面的MusicActivity.this.set…根本不是同一个Intent,把上面的也改成MusicActivity.this.getIntent(),祝你好运,手机输入,见谅
[/Quote]
+1
baodingxiaolang 2011-08-19
  • 打赏
  • 举报
回复
注意,你的按钮事件中用的getIntent()获取的Intent.和下面的MusicActivity.this.set…根本不是同一个Intent,把上面的也改成MusicActivity.this.getIntent(),祝你好运,手机输入,见谅
sknice 2011-08-18
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 baodingxiaolang 的回复:]

注意,startActivityFouResult方法是在跳转到子activity后,子activity 调用setResult后并且finish()销毁后才会执行主activity的onactivityresult,把值传入。手机输入,见谅
[/Quote]
已经finish()了。结束的代码如下

//OK
class BtnOKListListener implements OnClickListener
{
@Override
public void onClick(View v)
{
String strListName=txtName.getText().toString();
getIntent().putExtra("strListName",strListName);
AddNewMusicListActivity.this.setResult(RESULT_OK, getIntent());
finish();
}
}
passself 2011-08-18
  • 打赏
  • 举报
回复
dsaaaaaaaaa
passself 2011-08-18
  • 打赏
  • 举报
回复
设置一个全局变量来传值
passself 2011-08-18
  • 打赏
  • 举报
回复
如果二者是在同一个类里用全局变量就比较好,在两个activity中的话没有办法传值
sknice 2011-08-18
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 baodingxiaolang 的回复:]

注意,startActivityFouResult方法是在跳转到子activity后,子activity 调用setResult后并且finish()销毁后才会执行主activity的onactivityresult,把值传入。手机输入,见谅
[/Quote]
已经finish()了。结束的代码如下

//OK
class BtnOKListListener implements OnClickListener
{
@Override
public void onClick(View v)
{
String strListName=txtName.getText().toString();
getIntent().putExtra("strListName",strListName);
AddNewMusicListActivity.this.setResult(RESULT_OK, getIntent());
finish();
}
}
sknice 2011-08-18
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 baodingxiaolang 的回复:]

注意,startActivityFouResult方法是在跳转到子activity后,子activity 调用setResult后并且finish()销毁后才会执行主activity的onactivityresult,把值传入。手机输入,见谅
[/Quote]
子 activity 已经finish()了
代码是这么写的

//OK
class BtnOKListListener implements OnClickListener
{
@Override
public void onClick(View v)
{
String strListName=txtName.getText().toString();
getIntent().putExtra("strListName",strListName);
AddNewMusicListActivity.this.setResult(RESULT_OK, getIntent());
finish();
}
}
加载更多回复(8)

80,351

社区成员

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

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