2012-03-27 3 views
1

프로그램은 onActivityResult를 호출하지 않습니다. 필자는 이렇게 많은 게시물에 있었지만 작동하지 않습니다.활동은 onActivityResult를 호출하지 않습니다

Android 3.0 에뮬레이터를 사용하는 임.

은이

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

새로운 Intent() 대신 getIntent()를 시도하십시오. 어쩌면 그것은 작동 할 것이다 –

+0

잘,'Intent intent = getIntent();'작동하지 않았다. –

답변

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(); 
    } 
} 

을 명시

여기에 전체 작업 코드입니다. 활동 OnReturnActivity은 MAIN 및 카테고리 LAUNCHER 조치를 가지고 있습니다 (그리고 주요 활동으로 시작됩니다). 액티비티 GimmeResult은 IntentFilter없이 추가되었습니다.

+0

두 클래스 모두'setContentView (R.layout.main);에 사용해야합니까? –

+0

샘플을 가져 주셔서 감사합니다. 내 문제는 내가'의도 의도 = 새로운 의도();'내 shop.java에서 제대로 생각한다면. –

1

단순히이

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

처럼 "RESULT_OK".. 를 사용하는 코드 Shop.java입니다 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); 
     } 
    }; 
} 

의 코드 OnActivityResult :

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

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

차이점은 무엇입니까? 나는 약간의 맛의 차이를 보았지만, 왜 @christian의 코드가 작동하지 않는 이유는 무엇인지 모르겠다. : 호기심 : – Nanne

+0

작동하지 않습니다. 클래스/메서드에서 onActivityResult를 호출해야합니까? –

+0

은 단순한 활동 또는 Tabhost입니까? – Abhi

0

당신의 코드가 괜찮아 보인다. onActivityResult은 결코 호출하지 않거나 케이스 0에 가지 마라 : 그것을 디버깅하려했다. 아무것도 이상한 것 같습니다.

+0

전화를 걸지 않았다고 생각합니다. 스위치 케이스 밖에서 출력을 시도했지만 결코 나타나지 않았습니다. –

+0

은 디버그를 통해 디버그 지점을 onResume 및 onActivityResult에 배치합니다. –

0

호출 된 Activity의 setData를 사용하십시오.

+0

setData는 어떤 작업을 수행합니까? –

+0

setData는 Activity를 호출 할 때 onActivityResult에서 가져올 수있는 Activity라는 데이터를 설정합니다. AndroidManifest.xml에 called activity를 입력했는지 확인하십시오. –

관련 문제