android fragment回调,android从DialogFragment回调 fragment_android-fragments_开发99编程知识库...

Activity 所涉及的是完全不了解 DialogFragment 。

fragment 類:public class MyFragment extends Fragment {

int mStackLevel = 0;

public static final int DIALOG_FRAGMENT = 1;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

if (savedInstanceState!= null) {

mStackLevel = savedInstanceState.getInt("level");

}

}

@Override

public void onSaveInstanceState(Bundle outState) {

super.onSaveInstanceState(outState);

outState.putInt("level", mStackLevel);

}

void showDialog(int type) {

mStackLevel++;

FragmentTransaction ft = getActivity().getFragmentManager().beginTransaction();

Fragment prev = getActivity().getFragmentManager().findFragmentByTag("dialog");

if (prev!= null) {

ft.remove(prev);

}

ft.addToBackStack(null);

switch (type) {

case DIALOG_FRAGMENT:

DialogFragment dialogFrag = MyDialogFragment.newInstance(123);

dialogFrag.setTargetFragment(this, DIALOG_FRAGMENT);

dialogFrag.show(getFragmentManager().beginTransaction(),"dialog");

break;

}

}

@Override

public void onActivityResult(int requestCode, int resultCode, Intent data) {

switch(requestCode) {

case DIALOG_FRAGMENT:

if (resultCode == Activity.RESULT_OK) {

//After Ok code.

} else if (resultCode == Activity.RESULT_CANCELED){

//After Cancel code.

}

break;

}

}

}

}

DialogFragment類:public class MyDialogFragment extends DialogFragment {

public static MyDialogFragment newInstance(int num){

MyDialogFragment dialogFragment = new MyDialogFragment();

Bundle bundle = new Bundle();

bundle.putInt("num", num);

dialogFragment.setArguments(bundle);

return dialogFragment;

}

@Override

public Dialog onCreateDialog(Bundle savedInstanceState) {

return new AlertDialog.Builder(getActivity())

. setTitle(R.string.ERROR)

. setIcon(android.R.drawable.ic_dialog_alert)

. setPositiveButton(R.string.ok_button,

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int whichButton) {

getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, getActivity().getIntent());

}

}

)

. setNegativeButton(R.string.cancel_button, new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int whichButton) {

getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_CANCELED, getActivity().getIntent());

}

})

. create();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值