【问题标题】:Issue in Button Text change from Dialog Fragment对话框片段中的按钮文本更改问题
【发布时间】:2016-09-12 05:21:11
【问题描述】:

这里有一个小问题,就像我在对话框片段中有 Recyclerview。即 recyclerview 中的银行名称当我们在 recyclerview 中选择一个银行并在 dialogfragment 关闭后,该名称应该出现在按钮上,即当我们选择 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);}

【问题讨论】:

  • 你的列表视图是在你的片段中还是在你的按钮所在的同一个活动中?
  • 在初始化 DialogRecyclerview 时传递任何处理程序或自定义侦听器接口。
  • 你能给我演示一下吗@pradeep 先生
  • @dipalishah 但 clicklistener 处于活动状态且 ondismisslistener 处于 dialogfragment 我想在 dialogfragment 的活动上设置文本
  • @sushildlh 当单击选择按钮时,对话框片段打开,其中有银行的列表视图,当我们选择银行时,(选择按钮)应替换为(选定银行)

标签: android android-recyclerview android-dialogfragment dialogfragment


【解决方案1】:

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

public interface CallBack {

void onItemSelect(String text);

}

在你的主类中实现这个

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

当您从主要活动中打开对话框片段时,只需将 MainActivity.this 作为参数传递给对话框构造函数。并在您的 Dialog 类构造函数中编写您的代码,如下所示

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

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

callback.onItemSelect(e.getBank_name());

希望对你有所帮助。

【讨论】:

  • 我已经改变了答案。
  • 我已经编辑了我的问题,只要我用过你说的同样的东西,就看它,但还是有错误
  • select_button.setOnClickListener 中您正在发送 callback 您已初始化它的位置?
  • 是的,初始化来自对话框片段,文本应该是 select_button 的变化
  • 尝试在 c.onItemSelect(e.getBank_name()); 调试您的代码,并让我知道 c 和 e.getBank_name() 此时。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-26
  • 2011-01-04
相关资源
最近更新 更多