1

Как представить DialogFragment в этом или как мы можем предотвратить отклонение диалога при использовании функции для отображения диалогового окна.Как использовать DialogFragments для сохранения диалогового окна во время поворота экрана, когда я использую функцию для alertDialog?

public void alertShow(String s){ 
    //Game Ended...!!! 
    android.support.v7.app.AlertDialog.Builder alertDialog = new android.support.v7.app.AlertDialog.Builder(this); 

    // Setting Dialog Title 
    if(s.equals("You") || (s.contains("P"))) 
     alertDialog.setTitle("Congratulations..."); 
    else 
     alertDialog.setTitle("Game's Up..."); 

    // Setting Dialog Message 
    if(s.equals("You") || s.contains("P")) 
     alertDialog.setMessage(s+" Win The Game..."); 
    else 
     alertDialog.setMessage("You Lose... I Win..."); 

    final ImageView img = new ImageView(this); 
    if(s.equals("You") || (s.contains("P"))) 
     img.setImageResource(R.drawable.firecrackers); 
    else 
     img.setImageResource(R.drawable.mmm); 

    alertDialog.setView(img); 

    // Setting Dialog Cancellation 
    alertDialog.setCancelable(false); 

    // Setting Positive "Yes" Button 

    SessionClass sessionClass = (SessionClass)getApplicationContext(); 
    final String str = sessionClass.getPlayer(); 
    alertDialog.setPositiveButton("Try Again", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
      Intent i; 
      if(null != str && str.contains("2")){ 
       i = new Intent(MainActivity2.this, Game1_1.class); 
       startActivity(i); 
      } 
      finish(); 
     } 
    }); 

    // Setting Negative "NO" Button 
    alertDialog.setNegativeButton("Main Menu", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
      Intent intent = new Intent(MainActivity2.this, MainActivity2.class); 
      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NO_HISTORY); 
      startActivity(intent); 
      finish(); 
     } 
    }); 

    // Showing Alert Message 
    alertDialog.show(); 
} 

Я новичок в Android, так что я не знаю, как изменить это диалог, который не исчезает при изменении ориентации экрана.

+0

Взгляните искусство этого учебника: http://www.androidbegin.com/tutorial/android-dialogfragment-tutorial/ –

+0

Я уже продлил свой родительский класс от активности, то как я могу продлить FragmentActivity. И нет ли другого способа сделать это без создания .xml AlertDialogs? –

ответ

1

Вам просто нужно создать класс DialogFragment, создать AlertDialog и сделать все, что вы делаете сейчас, в своем AlertDialog. Вы можете отправить String в конструкторе. Затем вы можете перезвонить в действие для событий кликов.

Нечто подобное для DialogFragment (это идет в его собственном файле Java):

import android.support.v7.app.AlertDialog; 
import android.app.Dialog; 
import android.app.DialogFragment; 

public class GameDialogFragment extends DialogFragment { 

    String s; 

    public GameDialogFragment(String str) { 
     this.s = str; 
    } 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     String title = ""; 
     String message = ""; 

     if(s.equals("You") || (s.contains("P"))) 
      title = "Congratulations..."; 
     else 
      title = "Game's Up..."; 

     if(s.equals("You") || s.contains("P")) 
      message = s+" Win The Game..."; 
     else 
      message = "You Lose... I Win..."; 

     final ImageView img = new ImageView(getActivity()); 
     if(s.equals("You") || (s.contains("P"))) 
      img.setImageResource(R.drawable.firecrackers); 
     else 
      img.setImageResource(R.drawable.mmm); 

     AlertDialog.Builder alertBuilder = new AlertDialog.Builder(getActivity()); 

     alertBuilder.setView(img); 


     AlertDialog dialog = builder.setTitle(title) 
       .setMessage(message) 
       .setPositiveButton("Try Again", new DialogInterface.OnClickListener() { 

        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         ((MainActivity2) getActivity()).clickedYes(); 
        } 
       }) 
       .setNegativeButton("Main Menu", new DialogInterface.OnClickListener() { 

        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         ((MainActivity2) getActivity()).clickedNo(); 
        } 
       }) 
       .create(); 

      return dialog; 
    } 
} 

Затем в деятельности, показать DialogFragment в вашем alertShow() метод, и определить обработчики кликов:

public void alertShow(String s){ 
    new GameDialogFragment(s).show(getFragmentManager(), ""); 
} 

public void clickedYes() { 
    SessionClass sessionClass = (SessionClass)getApplicationContext(); 
    String str = sessionClass.getPlayer(); 
    Intent i; 
    if(null != str && str.contains("2")){ 
     i = new Intent(MainActivity2.this, Game1_1.class); 
     startActivity(i); 
    } 
} 

public void clickedNo() { 
    Intent intent = new Intent(MainActivity2.this, MainActivity2.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NO_HISTORY); 
    startActivity(intent); 
} 
+0

спасибо, сэр ... большое объяснение ... –

0

Используйте DialogFragment или установите флаг и запустите его после поворота.

Это результат ответа here.

+0

Я уже расширил родительский класс в отношении активности, а затем как продлить FragmentActivity. И нет ли другого способа сделать это без создания .xml AlertDialogs? –

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

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