gpt4 book ai didi

java - AlertDialog 生成器 OnItemSelectedListener

转载 作者:太空狗 更新时间:2023-10-29 15:59:19 26 4
gpt4 key购买 nike

我有一个关于 AlertDialog Builder 的小问题,但很烦人。我想在自定义的 AlertDialog 中处理项目选择,但 OnItemSelectedListener 似乎没有选择我的点击。

自定义对话框:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="200dp"
android:layout_height="120dp"
android:layout_centerHorizontal="true"
android:layout_marginTop="60dp"
android:background="#AAFFFFFF"
android:orientation="vertical">


<TextView
android:text="English"
android:layout_width="match_parent"
android:layout_height="40dp"
android:id="@+id/lang_english"
android:gravity="center_vertical"
android:background="@color/borders"
android:paddingLeft="10dp"
android:onClick="onLanguageButtonClicked" />
<View
android:layout_height="1dp"
android:layout_width="match_parent"
android:background="#000000" />

<TextView
android:text="عربى"
android:layout_width="match_parent"
android:layout_height="40dp"
android:id="@+id/lang_arabic"
android:gravity="center_vertical"
android:background="@color/borders"
android:paddingRight="10dp"
android:onClick="onLanguageButtonClicked" />

<View
android:layout_height="1dp"
android:layout_width="match_parent"
android:background="#2e2e2e"/>

<TextView
android:text="کوردی "
android:layout_width="match_parent"
android:layout_height="40dp"
android:id="@+id/lang_kurdish"
android:gravity="center_vertical"
android:background="@color/borders"
android:paddingRight="10dp"
android:onClick="onLanguageButtonClicked" />

</LinearLayout>

单击按钮我打开对话框并处理它:

public void onClickDrawer(View view) {
switch (view.getId()) {
case R.id.button_account_language:
handleLanguageDialog();
break;
case R.id.button_account_currency:
handleCurrencyDialog();
break;
default:
break;
}
}

处理程序:

private void handleLanguageDialog() {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(R.layout.dialog_language);
builder.setOnItemSelectedListener(new AdapterView.
OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
SharedPreferences preferences = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
Log.i("info", "pressed" + Integer.toString(position));
restartInLocale(new Locale(preferences.getString("locale","")));
}

@Override
public void onNothingSelected(AdapterView<?> parent) {

}
});
builder.setNegativeButton("CANCEL", new DialogInterface
.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {

}
});
builder.create().show();
}

这是正确的方法还是我遗漏了什么?

提前致谢!

最佳答案

我不认为这是正确的方法,你让它变得非常复杂。如果我没看错,那么您正在尝试显示语言选择对话框,您应该按照以下给定的步骤操作。

  1. 在 strings.xml 资源文件中创建字符串数组

    <string-array name="lang">
    <item>English</item>
    <item>عربى</item>
    </string-array>
  2. 当你想显示警告对话框时写下下面的代码

    private void handleLanguageDialog() {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setTitle(R.string.pick_color)
    .setItems(R.array.lang, new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int which) {
    // The 'which' argument contains the index position
    // of the selected item
    switch(which)
    {
    case 0:// English
    break;
    case 1:// عربى
    break;
    }
    }
    });
    return builder.create();
    }

这是在警告对话框中显示语言列表的最简单方法,没有任何肯定或否定按钮。

关于java - AlertDialog 生成器 OnItemSelectedListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42547549/

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