我试着搜索,但我仍然有点失落.我通常通过Activityvia接口或a 来片段化片段通信BroadcastReceiver.
无论如何,我的问题是什么用getTargetFragment?有人可以提供用例或只是一个简单的例子,以便我能理解它的用法吗?
在涉及回调的Fragment示例中,通常它们在onAttach方法中分配侦听器,然后在onDetach方法中将侦听器设置为null.
这最后一部分是否必要?片段分离/销毁时,侦听器是否自动设置为null?或者在某些情况下你可能会分离片段并将其重新附加到其他地方,并且你不希望回调指向任何特定的东西,直到它重新附加到某些东西上?
我创建了以下DialogFragment,它是从Android文档中派生出来的:
公共类PayBillDialogFragment扩展DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState){
final Bundle b = this.getArguments();
// Use the Builder class for convenient dialog construction
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage("Paga bollettino")
.setPositiveButton("Paga", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// FIRE ZE MISSILES!
}
})
.setNegativeButton("Cancella", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User cancelled the dialog
}
});
// Create the AlertDialog object and return it
return builder.create();
}
}
Run Code Online (Sandbox Code Playgroud)
从另一个片段(ListFragment),当单击列的一行时,应该打开DialogFragment,按下DialogFragment的正按钮后,我希望能够删除ListFragment的选定行,并调用方法执行与删除相关的远程操作.我按如下方式实现了ListFragment:
public static class …Run Code Online (Sandbox Code Playgroud) 我知道的一种方式是通过activity.We可以从片段发送数据到活动和活动到片段有没有其他方式.
我目前正在为每个屏幕使用片段的单个活动应用程序中工作。我也在使用 MVP 设计模式。
语境
我想要的是?
如何将 Fragment-A 作为侦听器传递给 DialogFragment (Fragment-B),以便我可以从 DialogFragment 调用操作?
android android-fragments android-dialogfragment android-mvp
从我的Recylerview Adapter,每个项目中有多个按钮,我想要的是显示DialogFragment as confirmation单击它们的时间并在单击时执行不同的方法/操作positiveButton。
问题是我不知道如何拥有或如何在positiveButton单击时实现回调,并且可以根据每个项目上要单击的按钮执行不同的方法或操作。
e.g. 在我的适配器类上
@Override
public void onBindViewHolder(final PageOnlineAdapter.TheViewHolder holder, final int position) {
holder.btn_start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogFragment newFragment = ConfirmationDialog.newInstance(TITLE,CONTENT); //Initialize DialogFragment with a specific Title and Content
newFragment.show(((AppCompatActivity)contextView).getSupportFragmentManager(), TAG);
/*
if positiveButton is clicked
=>execute method/action here
*/
}
);
holder.btn_stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogFragment newFragment = ConfirmationDialog.newInstance(TITLE,CONTENT); //Initialize DialogFragment with a specific Title and Content …Run Code Online (Sandbox Code Playgroud)