2014-11-24 93 views
0

我有許多「擴展片段」文件。Android使用相同的alertdialog並設置不同的setPositiveButton內容

我想在AppUtility中設置警報對話框來共享不同的片段文件來使用。

當按鈕點擊不同的片段時,他們必須調用saveAlertDialog。

但我想覆蓋setPositiveButton。

因爲他們已經替換了不同的片段,或者他們調用了完成Activity。

如何使用share函數(saveAlertDialog)覆蓋不同的分片文件?

我的應用工具費爾有下面的代碼:

public static AlertDialog saveAlertDialog(Context mContext ) { 

    // Dialog style 
    TextView tv = new TextView(mContext); 
    tv.setText(mContext.getString(R.string.diary_save_alert)); 
    tv.setTextSize(30); 
    tv.setPadding(30, 10, 10, 10); 
    ContextThemeWrapper contextThemeWrapper = new ContextThemeWrapper(mContext,  R.style.customAlertDialog); 
    AlertDialog.Builder builder = new AlertDialog.Builder(contextThemeWrapper); 
    builder.setCustomTitle(tv); 
    builder.setPositiveButton(mContext.getString(R.string.save), new DialogInterface.OnClickListener() { 

     public void onClick(DialogInterface dialog, int whichButton) { 

      // VVVVVVV it have problem. 
      //mContext.finish(); 

     } 
    }); 
    builder.setNegativeButton(mContext.getString(R.string.not_save), new DialogInterface.OnClickListener() { 

     public void onClick(DialogInterface dialog, int whichButton) { 

      dialog.dismiss(); 
     } 
    }); 
    AlertDialog dialog = builder.create(); 
    return dialog; 
} 

我不同的片段文件。像如下:

AlertDialog dialog = AppUtils.saveAlertDialog(mContext); 

但我需要覆蓋setPositiveButton設置不同的內容在不同的片段文件。

就像替換爲BFragment或Cfragment或完成Activity一樣。

fragment = new BFragment(); 
if (fragment != null) { 

    getFragmentManager().beginTransaction().replace(R.id.diary_frame_container, fragment, "BFragment").addToBackStack("BFragment").commit();     
} else { 

    Log.e(TAG, "Error in creating fragment"); 
} 

有沒有人知道如何設計模式?

非常感謝。

回答

0

在你DialogUtils類寫如下的功能

public static void showMessageDialog(Context context, String title, String message, final DialogClickListener dialogBtnClickListener, String positiveButtonText, String negativeButtonText) { 
     AlertDialog.Builder alert = new AlertDialog.Builder(new ContextThemeWrapper(context, android.R.style.Theme_Holo_Light_Dialog)); 

     alert.setIcon(R.drawable.app_icon_small); 

     if (!TextUtils.isEmpty(title)) { 
      alert.setTitle(title); 
     } 

     if (!TextUtils.isEmpty(message)) { 
      alert.setMessage(message); 
     } 

     if (!TextUtils.isEmpty(positiveButtonText)) { 
      alert.setPositiveButton(positiveButtonText, new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        if (dialogBtnClickListener != null) { 
         dialogBtnClickListener.onDone(null, true, null); 
        } 
       } 
      }); 
     } 

     if (!TextUtils.isEmpty(negativeButtonText)) { 
      alert.setNegativeButton(negativeButtonText, new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        if (dialogBtnClickListener != null) { 
         dialogBtnClickListener.onDone(null, false, null); 
        } 
       } 
      }); 
     } 

     alert.show(); 
    } 

    public static interface DialogClickListener { 
     public void onDone(String stringMetadata, boolean isPositive, EditText editText); 
    } 

使用

現在您的片段類使用它們作爲

DialogUtils.showMessageDialog(getContext(), "title", "content", new DialogUtils.DialogClickListener() { 
        @Override 
        public void onDone(String stringMetadata, boolean isPositive, EditText editText) { 
         if (!isPositive) { 
          // if negative button is clicked 
         }else { 
          // positive button clicked 
        } 
       }, "Ok", "cancel"); 

編輯

爲了得到警告對話框實例可以用以下兩種選擇去:

您可以的showMessageDialog()返回類型設置爲Dialog使界面onDone()有對話實例的額外的參數(順便說額外的參數不會是一個好主意,因爲一旦一個按鈕被點擊自動對話框dissmisses)

對於第一個建議的工作,你必須做出一些改變,如下

由於沒有任何cancel()dismiss()方法從AlertDialog.Builder類 因此,而不是AlertDialog.Builder使用AlertDialog實例。

final AlertDialog alertDialog = alert.create(); 
alertDialog.show(); 

Enjoy!

+0

非常感謝。如果使用這個metohd,我怎樣才能在片段類中調用alert alert?謝謝:) – dickfala 2014-11-25 01:52:17

+0

不客氣:)!我已經編輯了我的回答,請看看,如果你喜歡我的回答,你能接受它。謝謝:) – 2014-11-25 05:07:16

+0

非常感謝。你很幫我:P – dickfala 2014-11-26 02:04:56