我需要使用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)
答案 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方法。