从对话框片段更改按钮文本中的问题
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());
希望对您有所帮助。
这里有一个小问题就像我在对话框中有 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());
希望对您有所帮助。