gpt4 book ai didi

android - 自定义 DialogFragment 中的 View.OnClickListener

转载 作者:太空狗 更新时间:2023-10-29 16:15:56 25 4
gpt4 key购买 nike

我正在尝试实现自定义 DialogFragment,遵循 this教程。我的问题是我无法处理自定义 View 的 button.setOnClickListener 事件。最奇怪的是,我在获取按钮的 .getText() 时没有问题,只是找不到处理点击事件的方法。下面是我的代码:

SettingsDialogFragment.java

 public class SettingsDialogFragment extends DialogFragment
{
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
// Get the layout inflater
LayoutInflater inflater = getActivity().getLayoutInflater();
final View view = inflater.inflate(R.layout.dialog_settings, null);

final Button colorButton =(Button) view.findViewById(R.id.colorButton_dialogSettings);
String s = colorButton.getText().toString();
System.out.println("its working "+s);

//NOT working
colorButton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
System.out.println("OnClick");
}
});

// Inflate and set the layout for the dialog
// Pass null as the parent view because its going in the dialog layout
builder.setView(inflater.inflate(R.layout.dialog_settings, null))
// Add action buttons
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id)
{

}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
SettingsDialogFragment.this.getDialog().cancel();
}
});
return builder.create();
}

`我的自定义 View 代码(dialog_settings.xml)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="200dp"
android:layout_height="wrap_content">
<EditText
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center"
android:scaleType="center"
android:background="#00CCCC"
android:contentDescription="@string/app_name"
android:text="@string/dialog_settings_title"
android:id="@+id/editText"/>
<Button
android:id="@+id/colorButton_dialogSettings"
android:inputType="textEmailAddress"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/color_picker_title"
android:layout_below="@+id/editText"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
/>

<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Stroke"
android:layout_marginLeft="55dp"
android:id="@+id/radioButtonStroke"
android:checked="false"
android:layout_below="@+id/colorButton_dialogSettings"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"/>

<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Fill"
android:id="@+id/radioButton_fill"
android:checked="false"
android:layout_below="@+id/colorButton_dialogSettings"
android:layout_toRightOf="@+id/radioButtonStroke"
android:layout_toEndOf="@+id/radioButtonStroke"
android:layout_marginLeft="10dp"
/>

最佳答案

我只是向您展示了重要的部分..我希望您能在代码中找到它们各自的行

final View view = inflater.inflate(R.layout.dialog_settings, null);
// inflating your view..for drawback, this line is [A]

您的 colorButton 有一个对 view.findViewById(R.id.colorButton_dialogSettings) 的引用,它来自您的 View 组 view..为它引用一个 onclick 监听器..

builder.setView(inflater.inflate(R.layout.dialog_settings, null))

此处的这段代码设置对话框的内容 View 。它使布局膨胀并正常工作.. 所以最后你的 builder 没有引用它的 content viewview 而是一个新的膨胀R.layout.dialog_settings 布局..

所以要解决它就这样做

builder.setView(view) // hope you know the view parameter

view 是您在第 [A] 行实例化的内容 ..

希望我说得有道理,对你来说足够清晰..如果有帮助请告诉我

关于android - 自定义 DialogFragment 中的 View.OnClickListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27770316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com