1

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

在此先感谢,维谢什。

4

2 回答 2

4

你做错了..从AB应该使用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);
        } 

乙:

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/

于 2013-04-15T07:15:36.123 回答
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();

    }
};

问候。

于 2013-04-15T07:17:05.957 回答