2015-02-08 159 views
2

我是一名Android初学者,我不知道我的代码中存在什么问题!我需要你的帮助,这是我的代码: 我想要做一个计算器= -/* .....我删除了if view == pbtn例如...只是尝试onclick函数.. 。而我不能找到什么是我的问题java.lang.NullPointerException:尝试调用虚拟方法android

package com.michael.mikematta.calculator; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

import static com.michael.mikematta.calculator.R.id.FirstNum; 
import static com.michael.mikematta.calculator.R.id.HelokBtn; 
import static com.michael.mikematta.calculator.R.id.KafolBtn; 
import static com.michael.mikematta.calculator.R.id.MinusBtn; 
import static com.michael.mikematta.calculator.R.id.PlusBtn; 
import static com.michael.mikematta.calculator.R.id.SecondNum; 
import static com.michael.mikematta.calculator.R.id.TheResult; 


public class MainActivity extends Activity implements View.OnClickListener { 

    EditText firstnumx; 
    EditText secondnum; 
    Button pbtn; 
    Button minusbtn; 
    Button kafolbtn; 
    Button helokbtn; 
    TextView theresult; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Button pbtn = (Button) findViewById(R.id.PlusBtn); 
     Button minusbtn = (Button) findViewById(R.id.MinusBtn); 
     Button kafolbtn = (Button) findViewById(R.id.KafolBtn); 
     Button helokbtn = (Button) findViewById(R.id.HelokBtn); 
     EditText firstnum = (EditText) findViewById(R.id.FirstNum); 
     EditText secondnum = (EditText) findViewById(R.id.SecondNum); 
     TextView theresult = (TextView) findViewById(R.id.TheResult); 

     minusbtn.setOnClickListener(this); 
     pbtn.setOnClickListener(this); 
     kafolbtn.setOnClickListener(this); 
     helokbtn.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View view) { 


     theresult.setText("hi"); 


    } 
} 

我的xml:

<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:background="@drawable/ic_launcher" 
     android:orientation="vertical" 

     tools:context=".MainActivity"> 

     <TextView 
      android:text="Hello Calculator" 
      android:layout_width="match_parent" 
      android:layout_height="50dp" 
      android:gravity="center" 
      android:textSize="20dp" 
      android:textColor="#000" 
      android:textStyle="bold" 
      /> 
     <EditText 
      android:layout_width="200dp" 
      android:layout_height="50dp" 
      android:layout_gravity="center" 
      android:gravity="center" 
      android:hint="Enter First Num" 
      android:background="#fff" 
      android:id="@+id/FirstNum" 
      android:layout_margin="10dp" 
      /> 
     <EditText 
      android:layout_width="200dp" 
      android:layout_height="50dp" 
      android:layout_gravity="center" 
      android:gravity="center" 
      android:hint="Enter Second Num" 
      android:background="#fff" 
      android:id="@+id/SecondNum" 
      android:layout_margin="10dp" 
      /> 
     <Button 
      android:layout_width="200dp" 
      android:layout_height="50dp" 
      android:layout_gravity="center" 
      android:gravity="center" 
      android:text="+" 
      android:background="#ffeeeeee" 
      android:textSize="22dp" 
      android:id="@+id/PlusBtn" 
      android:layout_margin="10dp" 
      /> 
     <Button 
      android:layout_width="200dp" 
      android:layout_height="50dp" 
      android:layout_gravity="center" 
      android:gravity="center" 
      android:text="-" 
      android:background="#ffeeeeee" 
      android:textSize="22dp" 
      android:id="@+id/MinusBtn" 
      android:layout_margin="10dp" 
      /> 
     <Button 
      android:layout_width="200dp" 
      android:layout_height="50dp" 
      android:layout_gravity="center" 
      android:gravity="center" 
      android:text="*" 
      android:background="#ffeeeeee" 
      android:textSize="22dp" 
      android:id="@+id/KafolBtn" 
      android:layout_margin="10dp" 
      /> 
     <Button 
      android:layout_width="200dp" 
      android:layout_height="50dp" 
      android:layout_gravity="center" 
      android:gravity="center" 
      android:text="/" 
      android:background="#ffeeeeee" 
      android:textSize="22dp" 
      android:id="@+id/HelokBtn" 
      android:layout_margin="10dp" 
      /> 
     <TextView 
      android:text="Here will be your result" 
      android:layout_width="match_parent" 
      android:layout_height="50dp" 
      android:gravity="center" 
      android:textSize="20dp" 
      android:textColor="#fff" 
      android:textStyle="bold" 
      android:background="#ffff714f" 
      android:id="@+id/TheResult" 
      /> 

    </LinearLayout> 

例外:

02-08 03:09:50.468 1648-1666/com.michael.mikematta.calcu2 W/EGL_emulation﹕ eglSurfaceAttrib not implemented 
02-08 03:09:50.468 1648-1666/com.michael.mikematta.calcu2 W/OpenGLRenderer﹕ Failed to set EGL_SWAP_BEHAVIOR on surface 0xaeeff540, error=EGL_SUCCESS 
02-08 03:09:50.538 1648-1648/com.michael.mikematta.calcu2 I/Choreographer﹕ Skipped 33 frames! The application may be doing too much work on its main thread. 
02-08 03:09:51.177 1648-1648/com.michael.mikematta.calcu2 I/Choreographer﹕ Skipped 37 frames! The application may be doing too much work on its main thread. 
02-08 03:09:53.984 1648-1648/com.michael.mikematta.calcu2 D/AndroidRuntime﹕ Shutting down VM 
02-08 03:09:54.000 1648-1648/com.michael.mikematta.calcu2 E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: com.michael.mikematta.calcu2, PID: 1648 
    java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setText(java.lang.CharSequence)' on a null object reference 
      at com.michael.mikematta.calcu2.MainActivity.onClick(MainActivity.java:47) 
      at android.view.View.performClick(View.java:4756) 
      at android.view.View$PerformClick.run(View.java:19749) 
      at android.os.Handler.handleCallback(Handler.java:739) 
      at android.os.Handler.dispatchMessage(Handler.java:95) 
      at android.os.Looper.loop(Looper.java:135) 
      at android.app.ActivityThread.main(ActivityThread.java:5221) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:372) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
02-08 03:09:57.267 1648-1648/com.michael.mikematta.calcu2 I/Process﹕ Sending signal. PID: 1648 SIG: 9 

任何帮助吗?

+0

这是什么问题...?正确解释。 – 2015-02-08 00:46:23

+0

onclick应用程序崩溃@SarveshKumarSingh – 2015-02-08 00:49:08

+0

其中是从LogCat的错误日志...? – 2015-02-08 00:57:44

回答

4

您在onCreate初始化变量theresult的本地副本:

TextView theresult = (TextView) findViewById(R.id.TheResult); 

onClick您试图访问其在外面onCreate声明的变量theresult的另一个实例。这个还没有初始化。这就是为什么当你试图执行setText时给予它的原因。

来解决,更换下面一行:

TextView theresult = (TextView) findViewById(R.id.TheResult); 

theresult = (TextView) findViewById(R.id.TheResult); 
+0

所以我必须补充? – 2015-02-08 01:13:54

+1

@MikhaMatta尝试解决方案的答案,让我知道它是否工作。 – 2015-02-08 01:15:12

+0

谢谢!有效 !! – 2015-02-08 01:17:57

0

要么检查已初始化过的视图或可能是布局已经被附加到活动。

password = (EditText) findViewById(R.id.password); 

setContentView(R.layour.login_screen); 
相关问题