簡體   English   中英

Activity不會調用onActivityResult

[英]Activity does not call 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();
        }
    });
}   

測試我創建了簡單的應用程序。 沒什么好看的,只是默認布局和兩個活動。 正確顯示onActivityResult Toast。

這是完整的工作代碼:

文件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。

只需使用“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");
          } 
}

你的代碼似乎我好了你的onActivityResult永遠不會調用或者只是不去處理案例0:你試過調試它嗎? 似乎沒什么不尋常的

使用來自被調用Activity的setData。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM