【问题标题】:Caused by: java.lang.IllegalArgumentException:引起:java.lang.IllegalArgumentException:
【发布时间】:2016-11-20 04:02:32
【问题描述】:

我已经在列表项上设置了一个意图,以便当我单击该项目时会启动一个新活动。当我单击列表项时,我的应用程序崩溃,并且此消息显示在 logcat 中:

原因:java.lang.IllegalArgumentException:未找到片段 DetailFragment{470791f #0 id=0x7f0c0055} 的 id 0x7f0c0055 (com.example.android.sunshine:id/container) 的视图

这是消息所引用的详细信息片段:

public static class DetailFragment extends Fragment {

    public DetailFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_detail, container, false);

        // The detail Activity called via intent.  Inspect the intent for forecast data.
        Intent intent = getActivity().getIntent();
        if (intent != null && intent.hasExtra(Intent.EXTRA_TEXT)) {
            String forecastStr = intent.getStringExtra(Intent.EXTRA_TEXT);
            ((TextView) rootView.findViewById(R.id.detail_text))
                    .setText(forecastStr);
        }
        return rootView;
    }

}

}

【问题讨论】:

  • 确保fragment_detail 文件包含detail_text 文本视图。
  • 是的,fragment_detail 文件包含 detail_text 文本视图。
  • 您应该尝试清除缓存并重建它。我多次遇到这个错误。
  • 显示您的 xml 文件。

标签: android android-fragments android-intent


【解决方案1】:

而不是直接从意图中获取字符串值, 尝试从 Bundle 中获取 String 值,如下例所示,您会得到 Caused by: java.lang.IllegalArgumentException: No view found,因为它在将视图返回到片段之前发生崩溃。

Intent intent = getActivity().getIntent();
if (intent != null && intent.getExtras()!= null) {
    String forecastStr = intent.getExtras().getString(Intent.EXTRA_TEXT, "");
    ((TextView) rootView.findViewById(R.id.detail_text))
                    .setText(forecastStr);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    • 2019-05-24
    • 2021-09-29
    • 1970-01-01
    相关资源
    最近更新 更多