2014-12-04 3 views
3

사용자 지정 대화 상자를 닫을 수 있습니까? 그들은 기본 .setpositive/Negative button사용자 지정 단추가있는 대화 상자를 닫을 수 없습니다.

시도 this 대답 밖에 해결되지하지만 여전히 작동하지 않는 것처럼 나는이 내 대화 코드

... .cancel().dismiss()에 오류가 발생합니다 :에

public void showSettingsAlert(){ 

    final AlertDialog.Builder alertdialog = new AlertDialog.Builder(mcontext); 
    LayoutInflater inflater = LayoutInflater.from(mcontext); 
    final View customView = inflater.inflate(R.layout.custom_gps,null); 
    alertdialog.setView(customView); 
    alertdialog.setCancelable(true); 
    FlatButton bouton_ok = (FlatButton)customView.findViewById(R.id.custom_ok_button); 
    FlatButton bouton_quitter = (FlatButton)customView.findViewById(R.id.custom_cancel_button); 

    bouton_ok.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
      mcontext.startActivity(intent); 


     } 
    }); 
    bouton_quitter.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
     //to close the whole application : 
      finish(); 
      System.exit(0); 
     } 
    }); 
    alertdialog.show(); 
} 

protected void onResume() { 
    super.onResume(); 
    gps = new GPSTracker(MainActivity.this); 
    // check if GPS enabled 
    if(gps.canGetlocation()){ 
     //stuff... 
    }else{ 
     gps.showSettingsAlert(); 
    } 
} 

답변

5

AlertDial : 활동을 개최,이 GPS를 사용하거나 사용하지 않은 경우 내가 확인하는 방법입니다 og.Builder는 경고 대화 상자를 작성하는 데 사용됩니다. 그런 다음 create() 메서드는 alertDialog 객체를 반환합니다.이 객체를 사용하면 dismiss()를 호출 할 수 있습니다.

AlertDialog.Builder builder = new AlertDialog.Builder(this); 

LayoutInflater inflater = getLayoutInflater(); 
View dialogView = inflater.inflate(R.layout.brush_opts_dialog,null); 
builder.setView(dialogView); 

closeBtn = (Button)dialogView.findViewById(R.id.close_btn); 

final AlertDialog dialog = builder.create(); 

closeBtn .setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View v) { 
    dialog.dismiss(); 
} 
}); 

dialog.show(); 
+0

여전히 대화 상자를 닫을 수 없습니다. 'final AlertDialog dialog = alertdialog.create(); bouton_ok.setOnClickListener (새 View.OnClickListener() { @Override 공공 무효 온 클릭 (보기 V) { 의도 의도 = 새로운 의도 (Settings.ACTION_LOCATION_SOURCE_SETTINGS) mcontext.startActivity (의도) dialog.cancel() ; } }); ' – RidRoid

+0

나를 위해 작동합니다. 정확히 무엇이 오류입니까? –

+0

none :/대화 상자가 닫히지 않습니다.하지만 기본 "setpositive"버튼을 다시 누르면 "settings"버튼을 클릭하면 대화 상자가 닫힙니다. 나는 setpositivebutton에'new DialogInterface.OnClickListener()'가 있기 때문이라고 생각한다. 내 사용자 지정 단추에'새 View.OnClickListener()'있습니다. 파 루크, 어떻게 생각하니? – RidRoid

관련 문제