2016-11-04 56 views
-1

只有當我試圖讓具有消息和一個複選框對話選擇題的項目。我使用下面的代碼AlertDialog表示不使用消息

private void displayWarning() { 

    SharedPreferences prefs; 
    final String PREFS_NAME = "UserData"; 
    final String PREF_SHOW_WARNING_KEY = "show_warning"; 

    prefs = this.getActivity().getSharedPreferences(PREFS_NAME, 0); 

    final String[] items = {"do not show again"}; 
    final boolean[] itemsChecked = {false}; 

    boolean displayWarnings = prefs.getBoolean(PREF_SHOW_WARNING_KEY, true); 

    if (displayWarnings) { 
     AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); 
     builder.setMessage("this is a warning") 
       .setCancelable(false) 
       .setMultiChoiceItems(items, itemsChecked, new OnMultiChoiceClickListener() { 

        @Override 
        public void onClick(DialogInterface dialog, int which, boolean isChecked) { 
         if (isChecked) { 
          itemsChecked[which] = false; 
         } else { 
          itemsChecked[which] = true; 
         } 

        } 
       }) 
       .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         // do things 
        } 
       }); 
     AlertDialog alert = builder.create(); 
     alert.show(); 
    } 
    if (itemsChecked[0]) { 
     displayWarnings = false; 
    } 
    else { 
     displayWarnings = true; 
    } 
    prefs.edit().putBoolean(PREF_SHOW_WARNING_KEY, displayWarnings).commit(); 
} 

運行此代碼後,複選框和文本「不再顯示」好好嘗試一下得到顯示。當我刪除郵件(「這是一個警告」)時,我確實收到了複選框。此外,當我更改消息以標題,我得到的複選框,但原始消息太長的標題使用...

希望這是SENCE。底線是我想要一個對話框,其中包含消息和複選框供用戶檢查,以便該對話框不會再次顯示。

回答

0

看看下面這個例子。我有一個複選框的警告對話框。它工作正常:

public class StartActivity extends AppCompatActivity { 

SharedPreferences sharedpreferences; 
String email_pref; 
String passw_pref; 
Boolean remember; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_start); 

    sharedpreferences = getSharedPreferences("MyPreferences", Context.MODE_PRIVATE); 
    email_pref = sharedpreferences.getString("EMAIL_SAVED", ""); 
    passw_pref = sharedpreferences.getString("PASSW_SAVED", ""); 
    remember = sharedpreferences.getBoolean("REMEMBER", false); 
} 


public void SignIn(View v){ 
    // dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 
    // custom dialog 
    final Dialog dialog = new Dialog(StartActivity.this); 
    dialog.setContentView(R.layout.sign_in_layout); //il suo layout personalizzato 
    dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 
    // set the custom dialog components - text, image and button 
    final EditText email = (EditText) dialog.findViewById(R.id.editEmailSignIn); 
    final EditText password = (EditText) dialog.findViewById(R.id.editPasswordSignIn); 
    final CheckBox rememberCheck = (CheckBox) dialog.findViewById(R.id.check_in); 


    if(remember == true && !email_pref.equals("") && !passw_pref.equals("")){ 
     email.setText(email_pref); 
     password.setText(passw_pref); 
     rememberCheck.setChecked(true); 
    } 

    Button dialogButton = (Button) dialog.findViewById(R.id.btn_confirm_signin); 
    dialogButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String mail = email.getText().toString(); 
      String psw = password.getText().toString(); 
      //QUERY AL DB PER VEDERE SE L'UTENTE ESISTE E ACCESSO EVENTUALE ALL'ACTIVITY SUCCESSIVA OPPURE ERRORE 
      String query = "SELECT email, password FROM users WHERE email='" + mail + "' AND password = '" + psw + "'"; 
      final SQLiteDatabase db = openOrCreateDatabase("AuctionDB", MODE_PRIVATE, null); 
      //db.execSQL(query); 
      Cursor c = db.rawQuery(query, null); 
      if(!c.moveToFirst()){ 
       Toast.makeText(getApplicationContext(),"No matches!", Toast.LENGTH_LONG).show(); 
      }else{ 
       //Toast.makeText(getApplicationContext(),"UTENTE TROVATO", Toast.LENGTH_LONG).show(); 
       dialog.dismiss(); 

       if(rememberCheck.isChecked()){ 
        SharedPreferences.Editor editor = sharedpreferences.edit(); 
        editor.putString("EMAIL_SAVED", email.getText().toString()); 
        editor.putString("PASSW_SAVED", password.getText().toString()); 
        editor.putBoolean("REMEMBER", true); 
        editor.commit(); 
       }else{ 
        SharedPreferences.Editor editor = sharedpreferences.edit(); 
        editor.putString("EMAIL_SAVED", ""); 
        editor.putString("PASSW_SAVED", ""); 
        editor.putBoolean("REMEMBER", false); 
        editor.commit(); 
       } 

       //pass to the ViewActivity 
       Intent intent = new Intent(StartActivity.this, ViewActivity.class); 
       Bundle b = new Bundle(); 
       b.putString("email", mail); 
       intent.putExtras(b); 
       startActivity(intent); 
       finish(); 
      } 

     } 
    }); 
    dialog.show(); 
} 

整個例子是:

https://github.com/alessandroargentieri/AuctionExample

+0

雖然很高興看到另一種解決方案,工程,我也很感興趣,什麼不順心在我的例子 – MWB

+0

好吧,我測試,我發佈了另一個答案 –