Callback在Dialog是很重要的技巧
這篇就介紹在Activity上用DialogFrament Callback的方法
1. 官網參考 http://developer.android.com/guide/topics/ui/dialogs.html#PassingEvents
2. 承[Android] 10-5 DialogFragment這篇
先建立ㄧ個interface來當Listener
範例如下
interface Listener{
void onPositiveClick();
void onNegativeClick();
}
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();
}
}
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();
}
});
5. 在Activity上要implements該interface並override裡面的方法
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 !!");
}
}
7. 執行後按下按鈕就會產生callback了