如何将按钮连接到将使用用户输入在 FrameLayout 中编辑 TextView 的对话框?
How do I connect a button to a Dialog that will edit a TextView, within a FrameLayout, with a users input?
我完全不懂DialogFragment。如何创建一个,如何从中获取用户输入,并将其设置为 TextView。
我希望 TITLE 按钮在单击时弹出一个 DialogFragment,要求用户输入他们的情绪板的标题。用户输入标题。当他们单击 PostiveButton "Done" 时,用户的标题将设置到情绪板的左上角框架中,其中有一个带有提示的 TextView。
拜托!问问题,因为我不太了解对话框设置。
这是我的 main_layout 在我的 MainActivity 中的图片。每个元素都有一个“@+id/”。
您可以将情绪板标题文本视图设为静态,然后使用编辑文本将其调用到警报对话框以将其设置为文本 (setText)
像这样。
final EditText edittext = new EditText(MainActivity.this);
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setMessage("Input Title")
.setView(edittext)
.setCancelable(false)
.setPositiveButton("Confirm", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
YourCustomDialog.your_title_textviewMoodboard.setText(edittext.getText().toString());
}
})
.setNegativeButton("Back", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
});
AlertDialog alert = builder.create();
alert.show();
在您的自定义对话框中。全局声明你的 textview 静态
public static TextView your_title_textviewMoodboard;
您正在寻找的解决方案是回调:
- 使用方法创建接口以用作回调
- 在 activity
上实现接口
- 创建对话框片段并在 onAttach 中获取界面
- 在 activity
上显示对话框片段
- 关闭对话框片段时使用界面实例传递文本
interface Callback {
updateText(String text)
}
class CoolActivity... implements Callback
onCreate {
//find your views
showDialogBtn.setOnClickListener(...
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
Fragment prev = getSupportFragmentManager().findFragmentByTag("yourTag");
if (prev != null) {
ft.remove(prev);
}
ft.addToBackStack(null);
DialogFragment dialogFragment = ExampleDialogFragment.newInstance();
dialogFragment.show(ft, "yourTag");
)
}
@Override
updateText(String text) {
youtView.setText(text)
}
class CoolDialogFragment extend DialogFragment {
private Callback callback;
@Override
void onAttach(Context context) {
callback = (Callback) context
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = new Dialog(getActivity());
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
return dialog;
}
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.dialog_fragment_example, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
//find the views in the dialog fragment
closeBtn.clickListener(...
callback.updateText(edittext.getText().toString())
dismiss()
)
}
}
这是对话片段的要点
https://gist.github.com/cutiko/7e307efcf7492ea52ef05cd90f9e3203
问题是您想要将对话片段与另一个组件连接起来,并且您想要直接进行。这不是一个好的做法,因为你创建了 2 个高度附加的组件,所以最好的办法是使用数据持久性和某种形式的反应编程
我完全不懂DialogFragment。如何创建一个,如何从中获取用户输入,并将其设置为 TextView。
我希望 TITLE 按钮在单击时弹出一个 DialogFragment,要求用户输入他们的情绪板的标题。用户输入标题。当他们单击 PostiveButton "Done" 时,用户的标题将设置到情绪板的左上角框架中,其中有一个带有提示的 TextView。
拜托!问问题,因为我不太了解对话框设置。
这是我的 main_layout 在我的 MainActivity 中的图片。每个元素都有一个“@+id/”。
您可以将情绪板标题文本视图设为静态,然后使用编辑文本将其调用到警报对话框以将其设置为文本 (setText) 像这样。
final EditText edittext = new EditText(MainActivity.this);
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setMessage("Input Title")
.setView(edittext)
.setCancelable(false)
.setPositiveButton("Confirm", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
YourCustomDialog.your_title_textviewMoodboard.setText(edittext.getText().toString());
}
})
.setNegativeButton("Back", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
});
AlertDialog alert = builder.create();
alert.show();
在您的自定义对话框中。全局声明你的 textview 静态
public static TextView your_title_textviewMoodboard;
您正在寻找的解决方案是回调:
- 使用方法创建接口以用作回调
- 在 activity 上实现接口
- 创建对话框片段并在 onAttach 中获取界面
- 在 activity 上显示对话框片段
- 关闭对话框片段时使用界面实例传递文本
interface Callback {
updateText(String text)
}
class CoolActivity... implements Callback
onCreate {
//find your views
showDialogBtn.setOnClickListener(...
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
Fragment prev = getSupportFragmentManager().findFragmentByTag("yourTag");
if (prev != null) {
ft.remove(prev);
}
ft.addToBackStack(null);
DialogFragment dialogFragment = ExampleDialogFragment.newInstance();
dialogFragment.show(ft, "yourTag");
)
}
@Override
updateText(String text) {
youtView.setText(text)
}
class CoolDialogFragment extend DialogFragment {
private Callback callback;
@Override
void onAttach(Context context) {
callback = (Callback) context
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = new Dialog(getActivity());
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
return dialog;
}
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.dialog_fragment_example, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
//find the views in the dialog fragment
closeBtn.clickListener(...
callback.updateText(edittext.getText().toString())
dismiss()
)
}
}
这是对话片段的要点 https://gist.github.com/cutiko/7e307efcf7492ea52ef05cd90f9e3203
问题是您想要将对话片段与另一个组件连接起来,并且您想要直接进行。这不是一个好的做法,因为你创建了 2 个高度附加的组件,所以最好的办法是使用数据持久性和某种形式的反应编程