2012-02-04 53 views
0

我有一個應用程序,我希望兩個基於點擊按鈕的兩個活動開始其中一個活動,然後從被調用的活動返回某些值。我知道我應該使用requestCode來檢查活動。但無論哪種方式,該應用程序假定第一個活動被調用。這是我在主類中的部分代碼。來自多個活動的返回值

public void onClick(View v) { 
    switch(v.getId()) 
    { 
    case R.id.start: 
     Intent i = new Intent(this, one.class); 
     startActivityForResult(i, FIRST_CODE); 
     break;  
    case R.id.qwe: 
     Intent j = new Intent(this, two.class); 
     startActivityForResult(j, SECOND_CODE); 
     break; 
    } 

,後來,

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    if(requestCode==FIRST_CODE) 
    { 
     if(resultCode==RESULT_OK) 
     { 
      min = Integer.parseInt(data.getStringExtra("minutes")); 
      sec = Integer.parseInt(data.getStringExtra("seconds")); 
      test1.setText(min + ":" + sec); 
     } 
    } 
    else if(requestCode==SECOND_CODE) 
    { 
     if(resultCode==RESULT_OK) 
     { 
      runMin = Integer.parseInt(data.getStringExtra("minutes")); 
      runSec = Integer.parseInt(data.getStringExtra("seconds")); 
      test2.setText(runMin + ":" + sec); 
     } 
    } 
} 

在我的班級 '一' 和 '二',這是我的代碼:

 min = (EditText)findViewById(R.id.smin); 
     sec = (EditText)findViewById(R.id.ssec);    
     String mtime, stime;   
     mtime = min.getText().toString(); 
     stime = sec.getText().toString(); 
     dat2 = new Intent(); 
     dat2.putExtra("minutes", mtime); 
     dat2.putExtra("seconds", stime); 
     setResult(RESULT_OK, dat2); 
     finish(); 

這兩個類是相同的。那是錯的嗎?謝謝。 :)

+0

爲什麼你需要創建兩種相同的活動?否則沒有什麼是錯的。 – 2012-02-04 17:53:26

+0

我想從兩個活動中獲得兩個不同的時間。它們基本相同,但我想將不同的結果存儲在不同的變量中,以便稍後使用它們。 – 2012-02-05 08:47:33

+0

我認爲你應該只創建一個活動,並且在該活動中通過布爾變量等條件區分時間。根據該變量狀態,可以將結果存儲在其他需要的變量中。 – 2012-02-05 18:29:12

回答

0

應用程序不假定第一個活動被調用。檢查requestCode的值onActivityResult()通過記錄它, 使用Log.d("TAG",requestCode);在onActivityResult()的第一行;
它會給你的信息abt哪些活動被稱爲(以什麼請求代碼)...

數據如何被放在意圖的差異活動,以及如何處理它在這個活動是完全不同的事情...