gpt4 book ai didi

android - 自定义警报对话框 Android 中的 OnClickListener

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:30:45 26 4
gpt4 key购买 nike

我是一个自学成才的初学者,感谢耐心等待!谢谢!

在 Eclipse 中,我用它自己的 xml 文件(“custom_dialog”)制作了一个自定义警报对话框,它被称为“usernamealert”。

如果用户尚未输入用户名(即 username.length == 0),我希望弹出警告。

在此布局中,我有一个 textView(“你叫什么名字?”)、editText 和按钮(“usernameButton”)。

在为按钮设置 onclicklistener 之前,一切正常。这是我的(相关的)Java:

LayoutInflater inflater = getLayoutInflater();
View dialoglayout = inflater.inflate(R.layout.custom_dialog, (ViewGroup) getCurrentFocus());
AlertDialog.Builder usernamebuilder = new AlertDialog.Builder(this);
usernamebuilder.setView(dialoglayout);

AlertDialog usernamealert = usernamebuilder.create();

当我把 onclicklistener 放进去的时候,它坏了!我应该把它放在哪里?

(以下是我尝试过的……都在我的 OnCreate 中)

LayoutInflater inflater = getLayoutInflater();
View dialoglayout = inflater.inflate(R.layout.custom_dialog, (ViewGroup)getCurrentFocus());
AlertDialog.Builder usernamebuilder = new AlertDialog.Builder(this);
usernamebuilder.setView(dialoglayout);


Button usernameButton = (Button) usernamealert.findViewById(R.id.usernameButton);
usernameButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
//store username in sharedprefs
usernamealert.dismiss();



}
});

在我说的代码之后:

if (username.length() == 0) {
usernamealert.show();
}

再一次,在我开始弄乱按钮之前它就起作用了!!

最佳答案

需要指定代码将在哪里搜索按钮,如果它只是“findViewById”,它将在主机的 xml 中搜索,应该是

LayoutInflater inflater =getLayoutInflater();
View myview = inflater.inflate(R.layout.dialoghireteachernegotiate, null);
// Inflate and set the layout for the dialog
// Pass null as the parent view because its going in the dialog layout
builder.setView(myview);
Button addS = (Button) myview.findViewById (R.id.bAddS);

这是我的类(class) Hireteachernegotiate.class 的一部分,它的布局为 hireteachernegotiate.xml

 AlertDialog.Builder builder = new AlertDialog.Builder(this);
// Get the layout inflater
LayoutInflater inflater =getLayoutInflater();
View myview = inflater.inflate(R.layout.dialoghireteachernegotiate, null);
// Inflate and set the layout for the dialog
// Pass null as the parent view because its going in the dialog layout
builder.setView(myview);

Button addS = (Button) myview.findViewById (R.id.bAddS);
addS.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {
//do some stuff
}
});

Button minusS = (Button) myview.findViewById (R.id.bMinusS);
addS.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {
//do other stuff
}
});

// Add action buttons
builder.setPositiveButton("YES", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {


dialog.cancel();
}
});
builder.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});



builder.show();

这是对话框布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">

<Button
android:id="@+id/bAddS"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />


<Button
android:id="@+id/bMinusS"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />

</LinearLayout>

关于android - 自定义警报对话框 Android 中的 OnClickListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12168358/

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