当前位置: 首页 > 知识库问答 >
问题:

单击DialogFragment阳性按钮后如何执行操作

羿昊英
2023-03-14

我根据Android文档创建了以下DialogFragment:

公共类PayBillDialogFraank扩展DialogFraank{

    @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();

    }





}

从另一个片段(列表片段)中,当单击列表中的一行时,应该打开DialogFraank,并且在按下DialogFraank的正按钮后,我希望能够删除ListFraank的选定行,并调用一个方法来执行与删除相关联的远程操作。我实现了ListFraank如下:

public static class ListFragment extends android.support.v4.app.ListFragment {



        ArrayList<String> listItems=new ArrayList<String>();


        ArrayAdapter<String> adapter;


        public static final String ARG_SECTION_NUMBER = "section_number";

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            final View rootView = inflater.inflate(R.layout.list_fragment_view,
                    container, false);


            ListView lv = (ListView)rootView.findViewById(android.R.id.list);

            }});
            adapter=new ArrayAdapter<String>(this.getActivity(),
                    android.R.layout.simple_list_item_1,
                    listItems);
                setListAdapter(adapter);
            return rootView;
        }



        @Override
        public void onListItemClick(ListView l, View v, int position, long id) {



            //opening the dialogfragment


        }


    }




    }

我不知道的是点击对话框的正按钮后如何处理这个动作。你能帮我吗?

编辑:要澄清,这是工作流:单击列表-

共有3个答案

盛承
2023-03-14

要调用对话框,可以使用以下命令:

android.support.v4.app.FragmentManager fm = getSupportFragmentManager();
if (fm.findFragmentByTag("PayBillDialogFragment") == null) {
    PayBillDialogFragment payBillDialogFragment = new PayBillDialogFragment();
    payBillDialogFragment.show(fm, "PayBillDialogFragment");
}

在dialogFragment中,

setPositiveButton("Paga", new DialogInterface.OnClickListener() {
   public void onClick(DialogInterface dialog, int id) {
       //Add your code here that should execute
       //when positive button is clicked
   }
});
武元白
2023-03-14

您有两个选项可以从PayBillDialogFragment调用ListFragment。

第一个是Android指南推荐的。所有通信都通过托管活动进行。这就是通过调用((HostingActivity)PayBillDialogFragment来获取托管活动的方式。getActivity())。deleteItem()内部PayBillDialogFragment。设置正按钮(onClick())。在HostingActivity中。deleteItem()获取膨胀的PayBillDialogFragment,并在其中调用一些delete方法。

看见http://developer.android.com/guide/components/fragments.html#EventCallbacks

第二您可以只使用DialogFragment。setTargetFragment()创建DialogFragment对象时,然后在PayBillDialogFragment内部。setPositiveButton(onClick())您可以通过DialogFragment获取付费账单对话框片段。getTargetFragment()并在那里调用delete方法。

请参见从DialogFragment回调片段

秋飞鸾
2023-03-14

这就是我如何处理片段和对话片段之间的通信

示例片段:

public class MainFragment extends Fragment {

    private static final int REQ_CODE = 1;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.main_fragment, container, false);
        Button b = (Button) v.findViewById(R.id.button);
        b.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                MyDialog dialog = new MyDialog();
                dialog.setTargetFragment(MainFragment.this, REQ_CODE);
                dialog.show(getFragmentManager(), "dialog");
            }
        });
        return v;
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        Toast.makeText(getActivity(), "Result: " + resultCode,
                Toast.LENGTH_SHORT).show();
        super.onActivityResult(requestCode, resultCode, data);
    }

}

对话片段示例

public class MyDialog extends DialogFragment {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setMessage("My dialog message")
                .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        notifyToTarget(Activity.RESULT_OK);
                    }
                })
                .setNegativeButton("Cancel",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
                                notifyToTarget(Activity.RESULT_CANCELED);
                            }
                        });
        return builder.create();
    }

    private void notifyToTarget(int code) {
        Fragment targetFragment = getTargetFragment();
        if (targetFragment != null) {
            targetFragment.onActivityResult(getTargetRequestCode(), code, null);
        }
    }

}

这是我在改变方向时唯一的方法。

 类似资料:
  • 编辑:底部的解决方案 这是一个跳棋游戏。单击一个按钮后,它等待单击第二个按钮与之交换。然而,有时你可能不想移动那个按钮,但一旦你点击了它,就没有回头路了,因为我无法禁用它。 在这里的其他帖子中,我看到人们使用 这只是使它在第一次单击后不可见。 这什么都干不了。 这也没什么用。编辑:所有这些方法都用true和false进行了尝试。 私有无效交换(){ 但你也需要 这样它就重新启用了它,或者其他什么,

  • 如果这个解决方案是错误的,如何处理这些点击和设置监听器? PS:请不要告诉我。

  • 问题内容: 我知道以前已经回答过,但是考虑到我仍然是一个新手,我想不出一种方法来执行操作并阻止单元格编辑,我已经尝试了几种方法,可以成功渲染按钮,但是当我单击它时,它编辑单元格而不是按下按钮,我知道为了避免单元格编辑,我应该创建一个抽象表并覆盖此方法: 但是我使用默认的JTable,所以这是我用于面板和单元格渲染器的代码: 这是我用来从sql检索数据到Jtable的代码(我自定义了DefaultJ

  • 链接到我正在尝试刮取的页面: https://www.nytimes.com/reviews/dining 因为这个页面有一个“show more”按钮,所以我需要Selenium自动反复单击“show more”按钮,然后以某种方式使用Beauty soup来获取页面上每个餐厅评论的链接。在下面的照片中,我想获取的链接位于https://...onigiri.html" 迄今为止的代码: 我如何

  • 我在使用Google的支持设计库中的FloatingActionButton时遇到了一些麻烦。按钮和onClickListener工作正常,但问题在于: 当我隐藏按钮和我显示它之后,按钮不直接执行onClick方法时,点击第一次,它必须点击2次工作。我没有在onClick中做任何复杂的事情,这些事情只需要为视图运行一个简单的就可以了。下面是我的代码,尽管我怀疑那里有什么问题:

  • 我已经检查了这个链接,但它提到了长点击。但是我在点击自定义对话框的按钮后面临这个问题。我已经把我的代码贴在这里了。有人能帮我避免这个错误吗?