1

我需要使用意图将值从 1.java 的 onItemClick 方法传递到 2.Java 中的 onActivityResult

1.java

public void onItemClick(AdapterView<?> parent, View view, int position,long id) 
{     

    int songindex=position; 
    Intent intent2 = new Intent(this, Play.class);
    intent2.putExtra("songindex",songindex);
    setResult(100, intent2);
    startActivity(intent2);


}

2.java

public class Play extends Activity {
MediaPlayer mp;
int currentsong=0;  
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.play);
    currentsong=getIntent().getIntExtra("songindex",-1);

}



    @Override
    protected void onActivityResult(int requestCode, int resultCode,
            Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode==100)
        {
            //Intent intent1=getIntent();
            //currentsong=getIntent().getExtras().getInt("songindex");
            pl(currentsong);
        }
    }

我的问题是意图值未从 1.java 传递到 2.java,当单击 onItemClick 时,我需要使用意图传递值并调用方法 pl(songindex)

4

3 回答 3

1

我想你误解了它onActivityResult()的工作原理。如果您想从额外的 in 中获取值2.java,请使用getIntent().getIntExtra("songindex", -1)in onCreate()(就像您实际做的那样)。可以在此处找到有关活动以及如何在它们之间传递值的更多信息。

于 2013-04-15T17:12:03.533 回答
1
protected void onActivityResult(int requestCode, int resultCode,
        Intent data) {

仅在 startActivityForResult() 启动的活动完成后调用。aka 如果 2.java 调用 1.java 那么 1.java 在完成时触发 onActivityResult。

currentsong=getIntent().getIntExtra("songindex",-1);

应该包含来自 1.java 的 songindex 的值

intent2.putExtra("songindex",songindex);

看看这个http://www.vogella.com/articles/AndroidIntent/article.html#overview_accessdata

于 2013-04-15T17:16:48.037 回答
0

问题是 onActivityResult 方法是在启动新活动的活动中执行的,而不是在已启动的活动中(在您的示例中为 Play 类)。

因此,您可以在已启动的活动(Player)的 onCreate 方法中获取启动 Player 活动的 Intent 中的额外数据,并以这种方式设置属性值。

此外,您可以在已启动的活动 (Play) 中使用 setResult 方法,如果您为结果启动了 Player 活动,则将执行调用者活动 (1) 的 onActivityResult 方法。

于 2013-04-15T17:22:24.723 回答