2016-11-04 10 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(); 
} 

При выполнении этого кода, флажок и текст «не показывать снова» doens't показано. Когда я удаляю сообщение («это предупреждение»), я устанавливаю флажок. Также, когда я меняю сообщение на заголовок, я устанавливаю флажок, но исходное сообщение слишком длинное для использования в заголовке ...

Надеюсь, что это имеет смысл. Суть в том, что я хочу иметь диалоговое окно с сообщением и флажком для проверки пользователем, чтобы диалог больше не показывался.

ответ

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

нормально, я тестировал , Я отправляю еще один ответ –

0

Диалог оповещения подходит, чтобы показать только один тип сообщения.

Итак, как я понимаю, если вы хотите просмотреть текстовое сообщение, чем многозадачность, вы должны использовать собственный макет.

Здесь было много других подобных вопросов, касающихся StackOverflow об одном и том же элементе, и у всех есть одно и то же предложение: использование настраиваемого макета для «сложных» макетов.

Часы эти ссылки:

Create AlertDialog with both MultiChoiceItems and message

Android : Alert Dialog with Multi Choice

 Смежные вопросы

  • Нет связанных вопросов^_^