1

나는 간단한 응용 프로그램을 먼저 MainActivity를 표시 한 다음 MainActivity를 볼 수있게 된 후 TransparentActivity를 표시합니다. 그 후 onClick은 TransparentActivity를 죽이고 대화 상자를 만들고 표시합니다. 마지막 단계에서 내가 얻을 오류결과 전달 실패 ResultInfo | java.lang.IllegalStateException : onSaveInstanceState 후이 작업을 수행 할 수 없습니다.

오류

Failure delivering result ResultInfo{who=null, request=1234, result=-1, data=Intent { }} to activity {com.example.kylu.layout/com.example.kylu.layout.GuidePhotoAlbum}: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState 

MainActivity

public class MainActivity extends FragmentActivity 
{ 
public static boolean flag=false; 
    private static int REQUEST_CODE = 1234; 

    @Override public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.mylayout); 
    } 

@Override 
protected void onResume() { 
    super.onResume(); 
    //transparentShows only once 
    if(!flag) 
    { 
     Intent i = new Intent(this, TransparentTip.class); 
     startActivityForResult(i, REQUEST_CODE); 
     flag=true; 
    } 
protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 
     if (REQUEST_CODE == requestCode) { 
      if (resultCode == Activity.RESULT_OK) { 
       Toast.makeText(this, "Show dialog", Toast.LENGTH_SHORT).show(); 
       DialogChoiceActivity dialogChoiceActivity = new DialogChoiceActivity(); 
       dialogChoiceActivity.show(getSupportFragmentManager(),"mydialog"); 
      } else if (resultCode == Activity.RESULT_CANCELED) { 
       Toast.makeText(this, "Don't show dialog", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    } 

TransparentTip

public class TransparentTip extends Activity { 

     public static int countTransp=0; 
     @Override 
     protected void onCreate(Bundle savedInstanceState) 
     { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.transparent_tip); 
      Button ok=(Button)findViewById(R.id.bToK); 
     } 

     public void buttonClick(View view) 
     { 
      if (view.getId() == R.id.bToK) 
      { 
       final Intent intent = new Intent(); 
       setResult(Activity.RESULT_OK, intent); 
       finish(); 
      } 
     } 

DialogChoiceActivity

,559,

Transparent가 더 이상 표시되지 않으면 MainActivity 위의 대화 상자를 표시하려고합니다. 나는이 대화 상자를 표시하는 tryed를 시도했지만 비슷한 오류가 발생합니다.

+1

dialogChoiceActivity.show (getSupportFragmentManager(), "mydialog"); 문제는 라인에 DialogChoiceActivity 클래스 코드를 게시합니다. –

+0

@HiteshGehlot ok 코드 대화 상자를 넣으십시오. –

+0

제가 추가해야합니다. 투명하지 않고이 대화 상자를 호출하면 문제가없는 것입니다. –

답변

0

dialogChoiceActivity.show (getFragmentManager(), "mydia log");

라인이 두 점 ("종료"새로운 DialogInterface.OnClickListener() {

이 builder.setNegativeButton 같아야 ("종료"새로운 DialogInterface.OnClickListener builder..setNegativeButton 신택스 에러가있다() {

+1

다음 맹인, 다음 대화 상자를 썼습니다. 문제가되지 않습니다. 왜냐하면 제가 투명한 활동을 보이지 않으면 문제가 나타나기 때문에 저는 여기 모든 200 행 코드를 그냥 간단한 대화 상자에 두지 않으므로 2 점만 편집하면됩니다. –

+0

+ 할 수 있습니다. 당신의 대답이 쓸모 없도록 getFragmentManager()를 사용하지 마라. –

3

당신이 당신의 onActivityResult를에 줄을 넣어 경우 작동합니다 :

super.onActivityResult(requestCode,resultCode,intent); 

그래서, 당신의 onActivityResult를이 다음과 같아야합니다

protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    super.onActivityResult(requestCode,resultCode,intent); 
    if (REQUEST_CODE == requestCode) { 
     if (resultCode == Activity.RESULT_OK) { 
      Toast.makeText(this, "Show dialog", Toast.LENGTH_SHORT).show(); 
      DialogChoiceActivity dialogChoiceActivity = new DialogChoiceActivity(); 
      dialogChoiceActivity.show(getSupportFragmentManager(),"mydialog"); 
     } else if (resultCode == Activity.RESULT_CANCELED) { 
      Toast.makeText(this, "Don't show dialog", Toast.LENGTH_SHORT).show(); 
     } 
    } 
}