【问题标题】:NullPointerException on Button按钮上的 NullPointerException
【发布时间】:2015-06-22 09:55:44
【问题描述】:

我有一个带有 Fragment 的 android 应用,它里面有一个按钮,点击它会导致一个 Activity。当我在我的设备上运行该应用程序时,它返回了一个错误。我只是感到困惑,因为一切似乎都是正确的,但随后它返回此错误。请帮我找出我的错误。谢谢!

 06-22 17:32:58.103: E/AndroidRuntime(32096): Process: com.samsung.android.example.helloaccessoryprovider, PID: 32096
 06-22 17:32:58.103: E/AndroidRuntime(32096): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.samsung.android.example.helloaccessoryprovider
 com.samsung.android.example.helloaccessoryprovider.Portfolio_AddImageToConsultation}: 
 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
 06-22 17:32:58.103: E/AndroidRuntime(32096):   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2693)
 06-22 17:32:58.103: E/AndroidRuntime(32096):   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2758)
 06-22 17:32:58.103: E/AndroidRuntime(32096):   at android.app.ActivityThread.access$900(ActivityThread.java:177)
 06-22 17:32:58.103: E/AndroidRuntime(32096):   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1448)
 06-22 17:32:58.103: E/AndroidRuntime(32096):   at android.os.Handler.dispatchMessage(Handler.java:102)
 06-22 17:32:58.103: E/AndroidRuntime(32096):   at android.os.Looper.loop(Looper.java:145)
 06-22 17:32:58.103: E/AndroidRuntime(32096):   at android.app.ActivityThread.main(ActivityThread.java:5942)
 06-22 17:32:58.103: E/AndroidRuntime(32096):   at java.lang.reflect.Method.invoke(Native Method)
 06-22 17:32:58.103: E/AndroidRuntime(32096):   at java.lang.reflect.Method.invoke(Method.java:372)
 06-22 17:32:58.103: E/AndroidRuntime(32096):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
 06-22 17:32:58.103: E/AndroidRuntime(32096):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)
 06-22 17:32:58.103: E/AndroidRuntime(32096): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
 06-22 17:32:58.103: E/AndroidRuntime(32096):   at com.samsung.android.example.helloaccessoryprovider.Portfolio_AddImageToConsultation.onCreate(Portfolio_AddImageToConsultation.java:86)
 06-22 17:32:58.103: E/AndroidRuntime(32096):   at android.app.Activity.performCreate(Activity.java:6289)
 06-22 17:32:58.103: E/AndroidRuntime(32096):   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
 06-22 17:32:58.103: E/AndroidRuntime(32096):   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)
 06-22 17:32:58.103: E/AndroidRuntime(32096):   ... 10 more

这是我的代码

public class Portfolio extends Fragment {
Button cam;
Intent addEvent;
public Portfolio() {
    // Required empty public constructor
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_portfolio,
    container, false);

    cam = (Button) view.findViewById(R.id.camerabutton);
    cam.setOnClickListener(addbutton);

    return view;
}
OnClickListener addbutton = new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        addEvent = new Intent(getActivity(), Portfolio_AddImageToConsultation.class);
        startActivity(addEvent);
    }
};

这是我的布局

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:baselineAligned="false"
tools:context=".MainActivity" >
<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello_world" />
<Button
    android:id="@+id/camerabutton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Sign Up" />

【问题讨论】:

  • 你在哪里调用这个 Fragment?看起来你正在使用这个 Fragment 类作为 Launcher,这是不正确的。你应该在 Activity 中使用 Fragment。
  • 是的,我在另一个 Activity 类中有一个 FragmentManager

标签: android


【解决方案1】:

你在这里粘贴代码的布局是fragment_portfolio吗?因为您必须使用按钮来膨胀布局,而不是任何其他布局。也尝试删除tools:context=".MainActivity" 可能会有所帮助。

【讨论】:

  • 是的,那是 fragment_portfolio :/ 我尝试删除 tools:context 然后它给了我这个错误 06-22 21:01:05.040: E/AndroidRuntime(24226): java.lang.RuntimeException: Unable to start活动 ComponentInfo{com.samsung.android.example.helloaccessoryprovider/com.samsung.android.example.helloaccessoryprovider.Portfolio_AddImageToConsultation}:java.lang.NullPointerException:尝试调用虚拟方法 'void android.widget.Button.setOnClickListener(android.view .View$OnClickListener)' 在空对象引用上
【解决方案2】:

我发现了问题!原来我在 Patien_AddImageToConsultation 类中使用了一个不同的布局,它不在 android 应用程序中

【讨论】:

    猜你喜欢
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-20
    • 2015-06-25
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多