android - onCreate中调用findViewById时出现NullPointerException

标签 android android-activity android-fragments android-view findviewbyid

每当我在 Activity 的 onCreate 中使用 findViewById 时,我都会收到 NullPointerException。例如:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if (savedInstanceState == null) {
        getSupportFragmentManager().beginTransaction()
                .add(R.id.container, new PlaceholderFragment()).commit();
    }
    TextView mTextView = (TextView) findViewById(R.id.textview);
}

我读到问题可能是当我尝试查找 View 时 View 可能未完全加载,这就是为什么我得到一个空指针。如果我在 Activity fragment 的 onCreateView 中调用 findViewById,则一切正常:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_main, container,
            false);
    TextView mTextView = (TextView) rootView.findViewById(R.id.textview);
}

但是,我需要在这个 fragment 类之外使用mTextView。我在Android的官方文档中看到了很多在Activity的onCreate中使用findViewById的例子。我做错了什么?

最佳答案

从布局 xml 中,将您的 textview 放入布局 xml- activity_main 中,以便 Activity 的 setContentView 可以在那里找到它。

当前 textview 位于布局 xml fragment_main

仅供引用:fragment_mainactivity_main 是两种不同的布局。如果您的应用程序结构不需要 fragment ,那么您根本不需要它。

关于android - onCreate中调用findViewById时出现NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24759904/

相关文章:

android - 试图将 map 放入 fragment Activity 中

android - ArrayAdapter的Textview占据整个屏幕

android - 使用 Wi-Fi 网络在两部 Android 手机之间进行通信

android - 编辑pdf以修改标题

android-activity - 在 Unity Android 插件中包含自定义 Activity (不覆盖 UnityPlayerActivity)?

android - 透明 active ,带有淡淡的灰色

java - 如何将 UTC 时间转换为其他时区 ("CST","IST")

java - Android 历史堆栈清除没有一个

android - 从 fragment 调用 fragment

java - 当我尝试在 fragment 生命周期中实例化新类时出错