2016-11-04 16 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

好吧,我测试,我发布了另一个答案 –