2013-01-31 24 views
0

我有兩個按鈕和音頻列表視圖,第一個按鈕我使用LongClick和startActivityForResult方法從MediaPlayer的另一個活動獲取字符串。但我也想使用第二個按鈕。我需要使用startActivityForResult得到另一個字符串另一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(); 
} 

}; 
+0

你能澄清你的問題是什麼嗎?我不知道你在問什麼,我懷疑我不是唯一一個。 – kabuko

+0

因此,如果我長時間點擊我的第一個按鈕,它將開始活動的結果和listview onClick將發送結果,我得到像s = basket.getString(「arnswer」);但我想要的是如果我sstartActivityForResult與button2從列表視圖獲取字符串,並得到它像s1 = basket.getString(「arnswer」); –

回答

1

所以基本上你需要知道請求代碼,它是第二個參數傳遞給startActivityForResult。從第一個按鈕調用時可以使用0作爲請求代碼,而從第二個按鈕調用時可以使用1。關於第一個按鈕結果

開始活動點擊

startActivityForResult(i, 0); 

開始對第二個按鈕的結果活動點擊

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作爲請求代碼,定義常量,以便將來可讀。

+0

非常感謝。 –

+0

再次感謝,它的工作原理..但我有一個問題,你可能知道我正在使用(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, proj,null,null,null);從SD卡獲取所有歌曲,但MediaStore.Audio.Media.INTERNAL_CONTENT_URI, proj,null,null,null);是從內部存儲..所有有什麼辦法來合併它們? –

+0

如果Uri不同,您不需要同時打電話,您可以稍後將所有歌曲添加到列表中並按需使用它們。請嘗試針對不同的主題提出新的問題,它可以讓更多SO成員知道,並且會得到更多的投入:),乾杯 – AAnkit

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; 

     } 
    }); 

使用兩個聽衆 一個長點擊監聽器b1.setOnLongClickListener(新View.OnLongClickListener(){})

等這樣 b1.setOnClickListener(新OnClickListener(){})

然後你會能夠用一個按鈕完成兩項任務