0

2 つのボタンとオーディオ リストビューがあります。最初のボタンでは、LongClick と startActivityForResult メソッドを使用して、MediaPlayer の別のアクティビティから文字列を取得します。しかし、私は2番目のボタンも使いたいです。別の MediaPlayer の別の文字列を取得するには、startActivityForResult を使用する必要があります。コードは次のとおりです。

public class MainActivity extends Activity {
String setData, gotArnswer,s,s1;
MediaPlayer mMediaPlayer;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mMediaPlayer = new MediaPlayer();
        Button b1 =(Button) findViewById(R.id.button1);
        Button b2 =(Button) findViewById(R.id.button2);
        b2.setOnLongClickListener(new View.OnLongClickListener() {

            public boolean onLongClick(View arg0) {
                // TODO Auto-generated method stub

                return false;
            }
        });
        b1.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub
                try {
                    if (mMediaPlayer.isPlaying()) {
                          mMediaPlayer.reset();
                 }
                  mMediaPlayer.setDataSource(s); //using string here
                  mMediaPlayer.prepare();
                 mMediaPlayer.start();
            } catch (Exception e) {

            }
            }
        });
        b1.setOnLongClickListener(new View.OnLongClickListener() {

            public boolean onLongClick(View v) {
                // TODO Auto-generated method stub
                Intent i = new Intent(MainActivity.this, Activityone.class);
                startActivityForResult(i, 0);
                return false;

            }
        });


    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK){
            Bundle basket = data.getExtras();
             s = basket.getString("arnswer");

        }
    }

そして私の ListView onClick()

public void onItemClick(AdapterView parent, View v, int position,
                        long id) {
  System.gc();
  music_column_index = musiccursor
    .getColumnIndexOrThrow(MediaStore.Audio.Media.DATA);
  musiccursor.moveToPosition(position);
  String filename = musiccursor.getString(music_column_index);
  Intent person = new Intent();
  Bundle backpack = new Bundle();
  backpack.putString("arnswer", filename);
  person.putExtras(backpack);
  setResult(RESULT_OK, person);
  finish();
}

};
4

2 に答える 2

1

したがって、基本的には、startActivityForResult に渡す 2 番目のパラメーターであるリクエスト コードについて知る必要があります。最初のボタンから呼び出す場合はリクエスト コードとして 0 を使用し、2 番目のボタンから呼び出す場合は 1 を使用できます。

最初のボタンクリックで結果のアクティビティを開始

 startActivityForResult(i, 0);

2 回目のボタンクリックで結果のアクティビティを開始

 startActivityForResult(i, 1);

onActivityResult(..) メソッドにチェックを追加して、以下に示すようなインテント結果でどのアクティビティが返されているかを知る必要があります。

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK){
           if(requestCode == 0) {
            // handling code of startActivityForResult of first button
           Bundle basket = data.getExtras();
             s = basket.getString("arnswer");
            }
           if(requestCode == 1) {
            // handling code of startActivityForResult of second button
            Bundle basket = data.getExtras();
             s1 = basket.getString("arnswer");
             }

        }
    }

編集:- リクエスト コードとして 0 と 1 を使用する代わりに、定数を定義して将来的に読み取り可能にします。

于 2013-01-31T18:25:48.650 に答える
0

コードのあなたの部分は役に立たない

b1.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub
                try {
                    if (mMediaPlayer.isPlaying()) {
                          mMediaPlayer.reset();
                 }
                  mMediaPlayer.setDataSource(s); //using string here
                  mMediaPlayer.prepare();
                 mMediaPlayer.start();
            } catch (Exception e) {

            }
            }
        });

この部分だけが機能しています

    b1.setOnLongClickListener(new View.OnLongClickListener() {

        public boolean onLongClick(View v) {
            // TODO Auto-generated method stub
            Intent i = new Intent(MainActivity.this, Activityone.class);
            startActivityForResult(i, 0);
            return false;

        }
    });

2 つのリスナーを使用する 1 つのロング クリック リスナー b1.setOnLongClickListener(new View.OnLongClickListener() {})

などなど b1.setOnClickListener(new OnClickListener(){})

次に、1 つのボタンで 2 つのジョブを実行できます。

于 2013-01-31T18:23:34.613 に答える