2012-03-27 150 views
1

該程序不會調用onActivityResult,我一直在很多職位,但我不能讓它工作。活動不會調用onActivityResult

即時通訊使用Android 3.0模擬器。

這是GameScreen.java

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) {  
    super.onActivityResult(requestCode, resultCode, data); 
    switch(requestCode) { 
    case 0: { 
     if (resultCode == Activity.RESULT_OK) {  
      String newText = data.getStringExtra("isRunning");   
      // TODO Update your TextView. 
      isRunning = true; 
     } 
     break; 
    } 
    } 
} 
public void pause(){ 
    clickListener = new OnClickListener() {   
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub    
      pause.setImageResource(R.drawable.pauseafter); 
      isRunning = false; 
      Intent intent = new Intent(Gamescreen.this, Shop.class);     
      startActivityForResult(intent, 0); 
     } 
    }; 
} 

的代碼這是代碼Shop.java

public void returnButton(){ 
    resume.setOnClickListener(new OnClickListener() {   
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Intent intent = new Intent(); 
      setResult(Activity.RESULT_OK,intent); 
      finish(); 
     } 
    }); 
} 
+0

嘗試getIntent()而不是新的Intent()。也許它會工作 – 2012-03-27 05:58:46

+0

好吧,它不工作'意圖intent = getIntent();'。 – 2012-03-27 06:04:58

回答

3

測試我創建了簡單的應用程序。沒什麼奇特的,只是默認佈局和兩個活動。 onActivityResult中的吐司顯示正確。

下面是完整的工作代碼:

文件OnReturnActivity.java

package some.package; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.widget.Toast; 

public class OnReturnActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Intent i = new Intent(this, GimmeReturn.class); 
     startActivityForResult(i, 0); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     // TODO Auto-generated method stub 
     Toast.makeText(this, "Got Result " + String.valueOf(resultCode),  Toast.LENGTH_SHORT).show(); 
     super.onActivityResult(requestCode, resultCode, data); 
    } 
} 

文件GimmeReturn.java

package some.package; 

import android.app.Activity; 
import android.os.Bundle; 

public class GimmeReturn extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Toast.makeText(this, "Returning!", Toast.LENGTH_SHORT).show(); 
     setResult(RESULT_OK); 
     finish(); 
    } 
} 

這兩項活動需要被添加到Android清單。活動OnReturnActivity具有操作MAIN和類別LAUNCHER(並作爲應用程序的主要活動啓動)。活動GimmeResult只是添加沒有任何IntentFilter。

+0

我應該用這兩個類'setContentView(R.layout.main);'? – 2012-03-27 09:28:27

+0

謝謝你的樣品。我的問題是我有'意圖意圖=新的意圖();'如果我想在我的shop.java正確。 – 2012-03-27 09:39:07

1

簡單地用 「RESULT_OK」 .. 像這樣

Intent i=new Intent(); 
setResult(RESULT_OK,i); 
finish(); 

在OnActivityResult中:

switch(requestcode) 
{ 
case 0: if(resultcode==RESULT_OK) 
    { 

      //Log.e("check","in OAR"); 
      } 
} 
+0

有什麼區別?我看到一些風味的區別,當然,但沒有什麼可以跳出來,因爲@christian的代碼不起作用? :好奇: – Nanne 2012-03-27 05:57:34

+0

它不起作用。我必須在類/方法中調用onActivityResult嗎? – 2012-03-27 05:59:43

+0

它是簡單的活動還是Tabhost? – Abhi 2012-03-27 06:06:26

0

看起來我的代碼好的是你的onActivityResult從來沒有打電話或只是不去的情況下0:你試圖調試它。有沒有什麼似乎不尋常

+0

我認爲它從來沒有調用過,我試着在開關盒外做輸出,但它從來沒有出現。 – 2012-03-27 06:02:29

+0

你有沒有調試過它將調試點放在onResume和onActivityResult – 2012-03-27 07:00:17

0

使用來自被調用Activity的setData。

+0

做什麼setData做? – 2012-03-27 06:25:15

+0

setData設置調用Activity時可以從onActivityResult中檢索的調用Activity的數據。確保您在AndroidManifest.xml中輸入了被調用的活動。 – 2012-03-27 08:12:26

相關問題