java.lang.RuntimeException:无法实例化活动组件信息java.lang.NullPointerException

java.lang.RuntimeException:无法实例化活动组件信息java.lang.NullPointerException,java,android,Java,Android,我只是在学习Android编程方面迈出了一小步。我正在学习一些关于Android编程的教程,在学习如何实现onKeyListener时,我遇到了一个错误“java.lang.RuntimeException:无法实例化activity ComponentInfo java.lang.NullPointerException”。尝试在我的手机上运行应用程序时,此错误导致另一个错误“adt不幸应用程序已停止”。以下是日志: 05-15 15:55:22.087: D/AndroidRuntime(2

我只是在学习Android编程方面迈出了一小步。我正在学习一些关于Android编程的教程,在学习如何实现onKeyListener时,我遇到了一个错误“java.lang.RuntimeException:无法实例化activity ComponentInfo java.lang.NullPointerException”。尝试在我的手机上运行应用程序时,此错误导致另一个错误“adt不幸应用程序已停止”。以下是日志:

05-15 15:55:22.087: D/AndroidRuntime(20672): Shutting down VM
05-15 15:55:22.087: W/dalvikvm(20672): threadid=1: thread exiting with uncaught exception (group=0x41ea1ba8)
05-15 15:55:22.087: E/AndroidRuntime(20672): FATAL EXCEPTION: main
05-15 15:55:22.087: E/AndroidRuntime(20672): Process: com.example.keyboardlistener, PID: 20672
05-15 15:55:22.087: E/AndroidRuntime(20672): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.keyboardlistener/com.example.keyboardlistener.MainActivity}: java.lang.NullPointerException
谢谢大家的回复。以下是我当前的代码:

Activity_Main.xml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.keyboardlistener.MainActivity"
    tools:ignore="MergeRootFrame" />
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.keyboardlistener.MainActivity$PlaceholderFragment" >

    <TextView
        android:id="@+id/TextResults"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hi" />

    <EditText
        android:id="@+id/editTextUserEntry1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/TextResults"
        android:layout_marginTop="58dp"
        android:layout_toRightOf="@+id/TextResults"
        android:ems="10" >

        <requestFocus />
    </EditText>

</RelativeLayout>
看起来您在这里使用的是
Fragment
s,这意味着所有涉及UI的操作都应该在
Fragment
中完成

调用
FragmentManager.beginTransaction()
是一项异步任务,这意味着当它完成任务时,不能保证
片段
已经膨胀或没有膨胀,因此
ed
很可能为null,导致
ed.setOnKeyListener()
要抛出
NullPointerException

请退出此代码

if (savedInstanceState == null) {
    getSupportFragmentManager().beginTransaction()
            .add(R.id.container, new PlaceholderFragment())
            .commit();
}
因为您正在实现一个片段,所以您可以在主布局中的gui组件视图中找到,因为您的片段位于顶部。

原因:java.lang.NullPointerException
Caused by: java.lang.NullPointerException
    at android.app.Activity.findViewById(Activity.java:1884)
    at com.example.keyboardlistener.MainActivity.<init>(MainActivity.java:18)
在android.app.Activity.findviewbyd(Activity.java:1884)上 在com.example.keyboardlistener.MainActivity上。(MainActivity.java:18)
初始化
MainActivity
成员变量时,调用
findViewById()
太早了。该活动还没有
窗口


将初始化移动到
setContentView()
之后的
onCreate()
。在
onCreate()
阶段将有一个
窗口
(没有像这样的NPE),假设视图位于您使用
setContentView()
设置的布局中,您实际上可以在
setContentView()之后找到一些内容。如果视图位于片段布局中,请将初始化移到片段
onCreateView()
(有关该操作的更多信息,请参阅)

谢谢大家的回复。.我尝试删除了savedinstancestate代码。.但没有帮助。.这是MainActivity.java中修改过的代码。你能把你的XML布局放在这里吗?用所有的代码更新了主帖,可能重复的代码检查日志猫,看看是哪一行导致了NPE。我用修改过的代码更新了根评论。.它仍然存在不适用于meI已使用修改后的代码更新根注释。如果我将代码移动到占位符片段中的onCreateView,meI仍然不适用。我收到一个错误。无法对非静态方法findViewById进行静态引用。请在膨胀的片段
rootView
上调用它。例如
rootView.findViewById(…)
if (savedInstanceState == null) {
    getSupportFragmentManager().beginTransaction()
            .add(R.id.container, new PlaceholderFragment())
            .commit();
}
Caused by: java.lang.NullPointerException
    at android.app.Activity.findViewById(Activity.java:1884)
    at com.example.keyboardlistener.MainActivity.<init>(MainActivity.java:18)