Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将对话框所选项目传递给其他活动或适配器_Java_Android_Dialog_Android Alertdialog - Fatal编程技术网

Java 将对话框所选项目传递给其他活动或适配器

Java 将对话框所选项目传递给其他活动或适配器,java,android,dialog,android-alertdialog,Java,Android,Dialog,Android Alertdialog,我一直在努力在我的项目中添加一个功能,我需要一些帮助来帮助我如何超越这一步。因此,我决定在我的首选项Fragment类上创建一个方法selectCurrency(),正如您所看到的,我创建了一个不超过6种货币的简单对话框,我想做的是,一旦从该对话框中选择了一种货币,我想在我的货币适配器上显示它 public class PreferencesFragment extends PreferenceFragment { final static String[] items = {"$ -

我一直在努力在我的项目中添加一个功能,我需要一些帮助来帮助我如何超越这一步。因此,我决定在我的首选项Fragment类上创建一个方法
selectCurrency()
,正如您所看到的,我创建了一个不超过6种货币的简单对话框,我想做的是,一旦从该对话框中选择了一种货币,我想在我的货币适配器上显示它

public class PreferencesFragment extends PreferenceFragment {

    final static String[] items = {"$ - US Dollar", "€ - Euro", "£ - British Pound","IRN - IRN ","A$ - Australian Dollar", " CA$ - Canadian Dollar"};

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Load the preferences from the XML resource
        addPreferencesFromResource(R.xml.pref_general);

        //show currency
        final Preference currencyPreference = findPreference
                (getResources().getString(R.string.setting_category_currency_change_button_key));
        currencyPreference.setOnPreferenceClickListener(preference -> {

              selectCurrency();

            return false;
        });

    }



    @RequiresApi(api = Build.VERSION_CODES.M)
    public void selectCurrency() {


        AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
        builder.setTitle("Select Currency")

                .setItems(items, (dialog, which) -> {

                   // String selectedText = items[which].toString();
                    Toast.makeText(getActivity(), items[which] + " was selected", Toast.LENGTH_SHORT).show();
                });
        builder.setPositiveButton("OK", null);
        builder.setNegativeButton("CANCEL", null);
        AlertDialog alertDialog = builder.create();

        alertDialog.show();

        Button button = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE);
        button.setBackgroundColor(Color.argb(100,100,25,51));
        button.setTextColor(Color.WHITE);
    }

}
这是我的适配器。 因此,目前我使用的字符串不正确,因此如何从上面的片段将所选货币获取到下面的适配器:at
holder1.setWalletAmountView(“$”+Double.valueOf(walletBalance.toString())

公共类CurrencyAdapter扩展了RecyclerView.Adapter{
@凌驾
公共无效onBindViewHolder(通用文件夹持有人,内部位置){
如果(getItemViewType(位置)=-1){
MonthSummary卡持有者1=(MonthSummary卡)持有者;
holder1.setWalletAmountView(“$”+Double.valueOf(walletBalance.toString());
holder1.SetTotalExpenseSemonth(“$”+Double.valueOf(totalExpenseAmount.toString());

@Benoit有任何帮助吗?您是否尝试过使用接口,然后在数据更改时通知适配器?
public class CurrencyAdapter extends RecyclerView.Adapter<CurrencyAdapter.GeneralViewHolder> {

    @Override
    public void onBindViewHolder(GeneralViewHolder holder, int position) {
        if (getItemViewType(position) == -1) {
            MonthSummaryCard holder1 = (MonthSummaryCard) holder;
            holder1.setWalletAmountView("$ " + Double.valueOf(walletBalance).toString());
            holder1.setTotalExpensesPerMonth("$ " + Double.valueOf(totalExpenseAmount).toString());