【问题标题】:List Dialog Fragment - Resources not found exception列出对话框片段 - 找不到资源异常
【发布时间】:2014-05-30 20:12:25
【问题描述】:

我正在尝试使用“which”变量查看选择了哪个项目,但我得到了这个异常。 这是我的片段对话框..

public class ItemSettingsDialogFragment extends DialogFragment{

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

        builder.setTitle(R.string.title_settings).setItems(R.array.item_settings_settings, new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {


                Toast.makeText(getApplication(), which, Toast.LENGTH_SHORT).show();

            }
        });

        return builder.create();
    }

}

这里是数组..

<string-array name="item_settings_settings">
    <item>One</item>
    <item>Two</item>
    <item>Three</item>
    <item>Four</item>
</string-array>

DialogFragment newFragment = new ItemSettingsDialogFragment();
            newFragment.show(getSupportFragmentManager(), "items_settings");

我收到此错误..

05-30 16:00:23.601: E/AndroidRuntime(2060): android.content.res.Resources$NotFoundException: String resource ID #0x0

如果有人知道出了什么问题..我不明白出了什么问题..请帮忙..

谢谢, 弗拉基米尔

【问题讨论】:

  • 字符串数组在哪里?是否在 res/values/array.xml 文件中?
  • 它在 res/values/strings.xml 中
  • 在 values 文件夹中创建一个名为 arrays.xml 的新文件。然后使用上面的代码,它应该适合你。
  • 还是一样... :\我不明白

标签: android android-layout android-widget


【解决方案1】:

调用 dialog.dismiss();在显示 Toast 之前

            @Override
            public void onClick(DialogInterface dialog, int which) {
                  dialog.dismiss();

                Toast.makeText(getApplication(), which, Toast.LENGTH_SHORT).show();

            }

希望它会起作用。

【讨论】:

  • 是的,这就是答案,但我已经以不同的方式弄清楚了。还是谢谢..
【解决方案2】:

试试这个代码。添加代码后清理您的项目以确保一切正常。

String[] items = getResources().getStringArray(R.array.item_settings_settings);

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

    builder.setTitle(R.string.title_settings).setItems(items, new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {


            Toast.makeText(getApplication(), which, Toast.LENGTH_SHORT).show();

        }
    });

【讨论】:

    【解决方案3】:

    我已经删除了 toast 消息并使用 Log 来编写消息并且它有效,没有更多例外。我想有人知道这是为什么..

    【讨论】:

      猜你喜欢
      • 2019-11-13
      • 1970-01-01
      • 2019-01-07
      • 1970-01-01
      • 1970-01-01
      • 2012-11-20
      • 2018-07-01
      • 2011-12-24
      • 1970-01-01
      相关资源
      最近更新 更多