【问题标题】:how to call setAction in dialog?如何在对话框中调用 setAction?
【发布时间】:2018-12-15 18:56:06
【问题描述】:

我想通过弹出对话框创建向 SQL lite 添加数据,在对话框中只有一个文本编辑和按钮保存。在 Snackbar 中通常使用 setAction()。但在对话框中我不知道如何调用“AddData”。

    @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            View view = inflater.inflate(R.layout.list_category_expanses, container, false);

        mTextMessage = (TextView) view.findViewById(R.id.message);

        textSubcategoryExpanses = (AppCompatTextView) view.findViewById(R.id.textSubcategoryExpanses);
        recyclerViewCategoryExpanses = (RecyclerView) view.findViewById(R.id.recyclerViewCategoryExpanses);

        Button btn1 = view.findViewById(R.id.buttonListCategoryExpanses);
        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                final Dialog fbDialogue = new Dialog(getActivity());
                fbDialogue.setContentView(R.layout.layout_add_category_expanses);
                fbDialogue.setCancelable(true);
                fbDialogue.show();

            }
        });
        initObjects();
        return view;
    }

我想将此代码 AddData 调用到 onCreate,此代码用于将文本保存在 sqlLite 中。

public View.OnClickListener AddData = new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            View customLayoutView = View.inflate(getActivity(), R.layout.layout_add_category_expanses, null);
            final EditText edNim = customLayoutView.findViewById(R.id.inputcategoryexpanses);
            final AlertDialog.Builder builder;
            builder = new AlertDialog.Builder(getActivity());
            builder.setCancelable(true);
            builder.setTitle(R.string.strTitleAlert);
            builder.setView(customLayoutView);
            builder.setPositiveButton(R.string.btnKlikstr, new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    String nim = edNim.getText().toString();
                    if (databaseHelper.addCategoryExpanses(new CategoryExpanses(nim))) {
                        getDataFromSQLite();
                        Toast.makeText(getActivity(), "Data berhasil disimpan", Toast.LENGTH_LONG).show();
                    } else {
                        Toast.makeText(getActivity(), "Data gagal disimpan", Toast.LENGTH_LONG).show();
                    }
                    dialogInterface.dismiss();
                }
            });
            AlertDialog alertDialog = builder.create();
            alertDialog.show();
        }
    };

请帮我解决这个问题。谢谢。

【问题讨论】:

    标签: android android-fragments android-dialogfragment android-dialog


    【解决方案1】:

    你必须这样做:

     @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.list_category_expanses, container, false);
    
        mTextMessage = (TextView) view.findViewById(R.id.message);
    
        textSubcategoryExpanses = (AppCompatTextView) view.findViewById(R.id.textSubcategoryExpanses);
        recyclerViewCategoryExpanses = (RecyclerView) view.findViewById(R.id.recyclerViewCategoryExpanses);
    
        Button btn1 = view.findViewById(R.id.buttonListCategoryExpanses);
        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
    
                View customLayoutView = View.inflate(getActivity(), R.layout.layout_add_category_expanses, null);
                final EditText edNim = customLayoutView.findViewById(R.id.inputcategoryexpanses);
                final AlertDialog.Builder builder;
                builder = new AlertDialog.Builder(getActivity());
                builder.setCancelable(true);
                builder.setTitle(R.string.strTitleAlert);
                builder.setView(customLayoutView);
                builder.setPositiveButton(R.string.btnKlikstr, new DialogInterface.OnClickListener() {
    
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        String nim = edNim.getText().toString();
                        if (databaseHelper.addCategoryExpanses(new CategoryExpanses(nim))) {
                            getDataFromSQLite();
                            Toast.makeText(getActivity(), "Data berhasil disimpan", Toast.LENGTH_LONG).show();
                        } else {
                            Toast.makeText(getActivity(), "Data gagal disimpan", Toast.LENGTH_LONG).show();
                        }
                        dialogInterface.dismiss();
                    }
                });
                AlertDialog alertDialog = builder.create();
                alertDialog.show();
    
            }
        });
        initObjects();
        return view;
    }
    

    【讨论】:

    • 谢谢,但我有新错误:android.database.sqlite.SQLiteConstraintException: UNIQUE 约束失败(代码 1555 SQLITE_CONSTRAINT_PRIMARYKEY)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    相关资源
    最近更新 更多