当前位置: 首页 > 知识库问答 >
问题:

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

严安志
2023-03-14

这里有一个小问题,就像我在对话框中有回收人员视图fragment.ie在回收人员视图中的银行名称当我们在回收人员视图中选择一家银行并在对话框片段后解雇该名称应该出现在按钮上,即当我们从对话框片段中选择联合银行时,它应该出现在按钮上。问题是当我们单击按钮时,它的文本会发生变化,而不是在解散监听器的时间

这是Dialog解雇代码:

 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);}

共有1个答案

曾航
2023-03-14

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

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());

希望它能帮助你。

 类似资料:
  • 我有一个片段,它添加了一个选项到选项菜单。当单击此选项时,将打开一个对话框片段。对话框将原始片段设置为其目标片段。如果在对话片段打开时没有发生方向变化,则目标片段与预期的一样,但是在方向变化之后,目标片段被设置为对话片段本身,而不是先前设置的片段。结果,当试图将目标片段强制转换为被设置为目标片段的片段时,我得到了一个classCastException。我需要在对话框中获取目标片段,因为它实现了一

  • 我的应用程序中有许多警报对话框。这是一个默认的布局,但我添加了积极和消极按钮的对话框。因此,按钮将获得Android 5的默认文本颜色(绿色)。我试图改变它,但没有成功。你知道怎么改变文字颜色吗? 我的自定义对话框: 创建对话框:

  • 在更改屏幕之前,我试图向用户显示带有对话框的成功消息。我希望它等待用户单击ok按钮或按Enter键,然后更改屏幕。由于我必须在程序中放置大量对话框,为了避免重复,我尝试在MainClass中使用一个createDialog方法来创建对话框,并将其添加到我传递给该方法的阶段。但问题是,我希望它将屏幕更改为用户按下ok按钮后传递给它的屏幕,但dialog的结果函数是一个内部方法,它不访问我传递给函数的

  • 我想改变颜色,想要一个更好的设计。。对此可以做些什么

  • 这里是我的创建对话框代码, 是否可以用蓝色而不是红色显示Disclose?