1

1.java の onItemClick メソッドから 2.Java の onActivityResult にインテントを使用して値を渡す必要があります。

1.ジャバ

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.ジャバ

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 から値を取得したい場合は、 in2.javaを使用getIntent().getIntExtra("songindex", -1)onCreate()ます (実際に行うように)。アクティビティとそれらの間で値を渡す方法の詳細については、こちらを参照してください。

于 2013-04-15T17:12:03.533 に答える
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

于 2013-04-15T17:16:48.037 に答える
0

問題は、onActivityResult メソッドが、起動されたアクティビティ (この例では Play クラス) ではなく、新しいアクティビティを開始するアクティビティで実行されることです。

そのため、起動されたアクティビティ (Player) の onCreate メソッド内で Player アクティビティを起動したインテント内の追加データを取得し、その方法で属性値を設定できます。

さらに、起動されたアクティビティ (Play) で setResult メソッドを使用することができ、結果の Player アクティビティを開始した場合、呼び出し元アクティビティ (1) の onActivityResult メソッドが実行されます。

于 2013-04-15T17:22:24.723 に答える