Android从onitemclick调用onactivityresult

时间:2013-04-15 16:58:29

标签: android

我需要使用onItemClick方法的意图将值从1.java传递到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时我需要使用intent传递值并调用方法pl(songindex)

3 个答案:

答案 0 :(得分:1)

我认为你误解了onActivityResult()的工作原理。如果您想从2.java中获取额外值,请在getIntent().getIntExtra("songindex", -1)中使用onCreate()(与您实际相同)。有关活动以及如何在它们之间传递值的更多信息,请参见here

答案 1 :(得分:1)

protected void onActivityResult(int requestCode, int resultCode,
        Intent data) {

仅在startActivityForResult()完成的活动开始后调用。如果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

答案 2 :(得分:0)

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

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

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