我已经开始使用android应用程序开发,我面临问题希望我可以在这里找到解决方案: -
我有2个活动A& B,A调用活动B.在B中显示一个表格,点击后我想导航到活动A并传递用户在活动B中做出的选择。
这是我正在使用的代码 在活动A中: -
/** listner for playlist button click*/
btnPlaylist.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Intent i = new Intent(MainActivity.this, PlayListActivity.class);
finish( );
startActivity(i);
}
使用此功能,我成功导航至活动B.
在活动B中我有itemclicklistener,我导航到活动A: -
private OnItemClickListener musicgridlistener = new OnItemClickListener()
{
public void onItemClick(AdapterView parent, View v, int position,long id)
{
/** After selecting song go back to main view. */
Intent in = new Intent(PlayListActivity.this, MainActivity.class);
in.putExtra( "filename" , filename );
finish( );
startActivityForResult( in,0 );
}
};
在活动A上我有onActivityResult从B获得结果: -
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0) {
}
}
我的问题: -
* 当我正常运行(不在调试模式下)时,我导航成功导航A-> B-> A。 但我在A *
中没有得到任何结果当我在模拟器中以调试模式运行时,OnActivityResult永远不会被调用而是得到一个 执行以下代码后出现错误“未找到来源”: -
Intent in = new Intent(PlayListActivity.this, MainActivity.class);
in.putExtra( "filename" , filename );
finish( );
startActivityForResult( in,0 );
提前致谢, Vishesh。
答案 0 :(得分:4)
你这样做的方式错误..从A
转到B
你应该使用startActivityForResult
,然后使用setResult
取回结果
/** listner for playlist button click*/
btnPlaylist.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Intent i = new Intent(MainActivity.this, PlayListActivity.class);
finish( );
startActivityForResult(i, 0);
}
B:
public void onItemClick(AdapterView parent, View v, int position,long id)
{
/** After selecting song go back to main view. */
Intent in = new Intent(PlayListActivity.this, MainActivity.class);
in.putExtra( "filename" , filename );
setResult(RESULT_OK, in);
finish( );
}
检查http://www.mybringback.com/tutorial-series/12186/android-startactivityforresult-example/
答案 1 :(得分:0)
您应该在活动A上使用startActivityForResult来启动活动B.不要完成A. 在活动B中使用setResult返回结果,完成它。必须是这样的:
Activity A:
/** listner for playlist button click*/
btnPlaylist.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Intent i = new Intent(MainActivity.this, PlayListActivity.class);
startActivityForResult(i);
}
Activity B:
/** After selecting song go back to main view. */
Intent in = new Intent(PlayListActivity.this, MainActivity.class);
in.putExtra( "filename" , filename );
setResult(RESULT_OK, in);
finish();
}
};
问候。