Callback在Dialog是很重要的技巧

這篇就介紹在Activity上用DialogFrament Callback的方法

 

1. 官網參考 http://developer.android.com/guide/topics/ui/dialogs.html#PassingEvents

01.png

 

2. 承[Android] 10-5 DialogFragment這篇

先建立ㄧ個interface來當Listener

範例如下

    interface Listener{
        void onPositiveClick();
        void onNegativeClick();
    }

02.png

 

3. 宣告這個Listener

並且在onAttach內給予值

這個觀念在Fragment內有介紹

範例如下


    private Listener mListener;
    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        try {
            mListener = (Listener) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException();
        }
    }

03.png

 

4. 然後在需要使用的地方執行callback方法

.setPositiveButton("確定", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int id) {
         mListener.onPositiveClick();
    }
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
     public void onClick(DialogInterface dialog, int id) {
        mListener.onNegativeClick();
     }
});

04.png

 

5. 在Activity上要implements該interface並override裡面的方法

 

05.png

 

6. 最後在看要執行什麼就好了

範例如下

public class MainActivity extends AppCompatActivity
    implements TestDialog.Listener{

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

        TestDialog dialog = new TestDialog();
        dialog.show(getFragmentManager(), "TAG");
    }

    @Override
    public void onPositiveClick() {
        Log.d("TAG", "onPositiveClick !!");
    }
    @Override
    public void onNegativeClick() {
        Log.d("TAG", "onNegativeClick !!");
    }
}

06.png

 

7. 執行後按下按鈕就會產生callback了

07.png  

arrow
arrow

    RX1226 發表在 痞客邦 留言(0) 人氣()