2014-11-10 2 views
1

주로 두 페이지가 주 응용 프로그램이고 두 번째 응용 프로그램이 있습니다.앱 확인 대화 상자가 여러 번 나타나는 경우

나는 메인에서 두 번째로, 그리고 어버이를 지나가고있다. 내가 문제가 있다는 것입니다 MainActivity.java

@Override 
    public void onBackPressed() { 
     new AlertDialog.Builder(this) 
     .setMessage("Are you sure you want to exit?") 
     .setCancelable(false) 
     .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       MainActivity.this.finish(); 
      } 
     }) 
     .setNegativeButton("No", null) 
     .show(); 
    } 

에서 응용 프로그램 종료 확인 대화 상자 기능을 추가 한

Button btnClose = (Button) findViewById(R.id.btnClose); 

     btnClose .setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Intent j = new Intent(Second.this,MainActivity.class); 
       startActivity(j); 
      } 
     }); 

:

Button btnSecond = (Button) findViewById(R.id.btnSecond); 

    btnSecond .setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Intent j = new Intent(MainActivity.this,Second.class); 
      startActivity(j); 
     } 
    }); 

Second.java하는 코드를 다음했습니다

MainActivity.java

는 다음과 같은 코드가 있습니다 내가 초에서 왔을 때. d 페이지를 메인 페이지로 옮긴 다음 장치의 뒤로 버튼을 누릅니다. 경고가 두 번 나타납니다.

MainActivity가 백그라운드에서 두 번로드 되었기 때문에이 문제가 발생했습니다. 주 페이지의 두 번째 단추를 클릭하고 두 번째 화면으로 넘어 갔을 때 두 번째 단추를 클릭했을 때 두 번째 단추를 클릭했을 때 두 번째 페이지에서 주 페이지로 이동합니다.

내가 원하는 것은 하나의 확인 대화 상자가 있어야하고 예를 클릭하면 주 활동이 여러 번로드 되더라도 닫아야한다는 것입니다. 모든

+0

'btnClose'에서'Intent j = new Intent (Second.this, MainActivity.class); 대신'MainActivity.this.finish();'메소드를 호출하십시오. startActivity (j); ' – Piyush

+0

btnClose에서 다른 활동을 시작하는 이유는 무엇입니까? – juned

+0

답장을 보내 주셔서 감사합니다 piyush 사용자가 두 번째 페이지로 이동하여 뒤로 버튼을 누르면 메인 페이지로 이동해야하므로 finish()를 호출 할 수 없습니다. –

답변

0

먼저 당신은 당신의 두 번째 활동 사용 호출 할 때 :

btnSecond .setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     Intent j = new Intent(MainActivity.this,Second.class); 
     j.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(j); 
    } 
}); 

당신은 당신이 두 번째 활동을 시작할 때 그냥 finish() 전화 super.onBackPressed();

@Override 
public void onBackPressed() { 
    new AlertDialog.Builder(this) 
    .setMessage("Are you sure you want to exit?") 
    .setCancelable(false) 
    .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int id) { 
      MainActivity.this.finish(); 
      super.onBackPressed(); 
     } 
    }) 
    .setNegativeButton("No", null) 
    .show(); 
} 
+0

답장을 보내 주셔서 감사합니다. 다음과 같은 오류가 발생합니다 : onBackPressed() 메서드가 Object 유형에 대해 정의되지 않았습니다. –

+0

'MainActivity.super.onBackPressed(); '를 시도하십시오. –

0

전화를해야

Intent j = new Intent(MainActivity.this,Second.class); 
startActivity(j); 
finish(); 

이렇게하면 문제가 해결됩니다.

+1

답장을 보내 주셔서 감사합니다. 사용자가 두 번째 페이지로 이동하면 뒤로 버튼을 누르면 메인 페이지로 이동합니다. –

1

첫 번째 활동을 다시 호출하면 안되며 두 번째 활동에서 finish를 호출 할 수 있습니다. 나는 이것이 당신의 문제를 해결할 것이라고 생각합니다.

Button btnClose = (Button) findViewById(R.id.btnClose); 

     btnClose .setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       Second.this.finish(); 
      } 
     }); 

주 동작시.

@Override 
    public void onBackPressed() { 
     new AlertDialog.Builder(this) 
     .setMessage("Are you sure you want to exit?") 
     .setCancelable(false) 
     .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       MainActivity.this.finish(); 
       super.onBackPressed(); 
      } 
     }) 
     .setNegativeButton("No", null) 
     .show(); 
    } 
0

초 활동 버튼 클릭 리스너에서 코드를 변경하십시오

`버튼 btnClose = (버튼) findViewById를 (R.id.btnClose);

btnClose .setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      finish(); 
     } 
    });` 

문제가 해결되었습니다.

finish() function은 활동을 중지시킵니다.

확인해주세요.

관련 문제