从对话框片段更改按钮文本中的问题

Issue in Button Text change from Dialog Fragment

这里有一个小问题就像我在对话框中有 Recyclerview fragment.ie Recyclerview 中的银行名称当我们 select Recyclerview 中的一个银行并且在 dialogfragment dismiss 之后该名称应该出现在按钮上即当我们 selected Union Bank 从对话框片段它应该出现在按钮上。问题是当我们点击按钮然后它的文本改变而不是在关闭时听众

这是对话框关闭代码:

 mRecyclerView.addOnItemTouchListener(new RecyclerTouchListener(getContext(), mRecyclerView, new ClickListener() {
        @Override
        public void onClick(View view, final int position) {
            Employee e = bank.get(position);
            Toast.makeText(getContext(), e.getBank_id() + "" + e.getBank_name(), Toast.LENGTH_SHORT).show();
            getDialog().setOnDismissListener(new DialogInterface.OnDismissListener() {
                @Override
                public void onDismiss(DialogInterface dialogInterface) {
                    Employee e = bank.get(position);
                    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getContext());
                    SharedPreferences.Editor edit = sp.edit();
                    edit.putString("bankname", e.getBank_name());
                    edit.commit();
                }
            });
            c.onItemSelect(e.getBank_name());
            onDismiss(getDialog());
        }

这是打开对话框并打印值的 onclick 事件:

select_button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            FragmentManager fm=getFragmentManager();
            DialogRecyclerview dr = new DialogRecyclerview(AccountManagement_banks.this,callback);
            dr.setRetainInstance(true);
            dr.show(getSupportFragmentManager(), "Dialog");
            SharedPreferences st = PreferenceManager.getDefaultSharedPreferences(AccountManagement_banks.this);
            String mode=st.getString("bankname","");
            select_button.setText(mode);
            Toast.makeText(getApplication(),mode,Toast.LENGTH_SHORT).show();
        }
    });

同样在:

@Override
public void onItemSelect(String text) {
    select_button.setText(text);
}

我在这里创建了新界面:

 public interface CallBack {
      void onItemSelect(String text);}

只需创建一个回调并在您的主class(您要显示名称的位置)上实现它,然后将回调实例传递给适配器。现在对话框片段,现在当您选择任何项目时,只需调用回调函数,该函数在主 calss 中被覆盖,并且在此函数内只需更改按钮的文本。

public interface CallBack {

void onItemSelect(String text);

}

在你的主要 class 中实现这个

public class MainActivity extends Activity implements CallBack {
.
.
.
public void onItemSelect(String text){
  button.setText(text);
}
.
.
}

当您从主 activity 打开对话框片段时,只需将 MainActivity.this 作为对话框构造函数中的参数传递。在你的 Dialog class 构造函数中写下你的代码

private Callback callback;
public YourDialog(Context context, Callback callback){
this.callback = callback;
}

当您选择列表项时,只需调用

callback.onItemSelect(e.getBank_name());

希望对您有所帮助。