未调用活动结果并且未找到错误源

时间:2013-04-15 07:08:58

标签: android

我已经开始使用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。

2 个答案:

答案 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();

    }
};

问候。