創(chuàng)建對話框

一、創(chuàng)建對話框

public class DatePickerFragment extends DialogFragment {

@NonNull

@Override

public Dialog onCreateDialog(Bundle savedInstanceState) {

AlertDialog.Builder builder=new AlertDialog.Builder(this.getActivity());

builder.setTitle(R.string.crime_date_picker_title);

builder.setPositiveButton(android.R.string.ok,null);

returnbuilder.create();

}

}

對話框????有三種按鈕:??????positive按鈕????、negative????按鈕以??及neutral按鈕。

二、啟動對話框

this.mDateButton.setOnClickListener(new View.OnClickListener(){

@Override

public void onClick(View v) {

FragmentManager manager=CrimeFragment.this.getActivity().getSupportFragmentManager();

DatePickerFragment dialog=new DatePickerFragment();

dialog.show(manager,CrimeFragment.DIALOG_DATE);

}

});

????三、給對話框配布局文件

1)、先定義布局文件;

2)、再如下:

public Dialog onCreateDialog(Bundle savedInstanceState) {

View v=this.getActivity().getLayoutInflater().inflate(R.layout.dialog_date,null);

AlertDialog.Builder builder=new AlertDialog.Builder(this.getActivity());

builder.setView(v);

builder.setTitle(R.string.crime_date_picker_title);

builder.setPositiveButton(android.R.string.ok,null);

return builder.create();

}

四、Fragment之間的數(shù)據(jù)傳遞(把數(shù)據(jù)傳到對話框)

1)、傳參

public static DatePickerFragment newInstance(Date date){

Bundle bundle=new Bundle();

bundle.putSerializable(DatePickerFragment.DIALOG_DATE,date);

DatePickerFragment fragment=new DatePickerFragment();

fragment.setArguments(bundle);

returnfragment;

}

2)、獲取參數(shù)( 在對話框那獲取傳來的數(shù)據(jù))

mDate=(Date)this.getArguments().getSerializable(DatePickerFragment.DIALOG_DATE);

3)、把值傳回去(對話框把數(shù)據(jù)傳給它的調(diào)用者)

//builder.setPositiveButton(android.R.string.ok,null);

builder.setPositiveButton(android.R.string.ok,newDialogInterface.OnClickListener(){

@Override

public voidonClick(DialogInterface dialog,intwhich) {

DatePickerFragment.this.sentResult(Activity.RESULT_OK);

}

});

//返回數(shù)據(jù)

private void sentResult(int resultCode){

if(this.getTargetFragment()==null){

return;

}

Intent intent=newIntent();

intent.putExtra(DatePickerFragment.DIALOG_DATE,this.mDate);

this.getTargetFragment().onActivityResult(this.getTargetRequestCode(),resultCode,intent);

}

4)、接收方重寫方法,拿到數(shù)據(jù)后想干嘛就干嘛

@Override

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

super.onActivityResult(requestCode, resultCode, data);

if(resultCode!= Activity.RESULT_OK){

return;

}

if(requestCode==CrimeFragment.REQUEST_CODE){

Date date=(Date) data.getSerializableExtra(DatePickerFragment.DIALOG_DATE);

this.crime.setmDate(date);

this.mDateButton.setText(date.toString());

}

}

子Activity由父Activity的fragment調(diào)用startActivityForResult()啟動。子Activity被銷毀后,父Activity會接收到onActivityResult()的調(diào)用請求,并將之轉(zhuǎn)發(fā)給啟動子Activity的fragment。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容