2014-03-27 119 views
0

当我运行这段代码,它不工作和发送目录下载到我这条线: “add.setOnClickListener(新View.OnClickListener(){”安卓:logcat的显示上(.setOnClickListener)错误

这里是我的代码:

public class MainActivity extends ActionBarActivity { 

    int counter; 
    Button add, sub; 
    TextView display; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     counter =0; 
     add = (Button) findViewById(R.id.Badd); 
     sub = (Button) findViewById(R.id.Bsub); 
     display = (TextView) findViewById(R.id.TVmain); 



     add.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       counter++; 
       display.setText("Your Total is: " + counter); 
      } 
     }); 

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.pluseonecalculator.MainActivity" 
    tools:ignore="MergeRootFrame" /> 

这是logcat的:

03-27 23:14:27.150:I /处理(408):发送信号。 PID:408 SIG:9 03-27 23:27:01.070:D/AndroidRuntime(420):关闭VM 03-27 23:27:01.070:W/dalvikvm(420):threadid = 1:未知的异常(group = 0x40015560) 03-27 23:27:01.090:E/AndroidRuntime(420):致命异常:主 03-27 23:27:01.090:E/AndroidRuntime(420):java.lang.RuntimeException :无法启动活动 ComponentInfo {com.example.pluseonecalculator/com.example.pluseonecalculator.MainActivity}: java.lang.NullPointerException 03-27 23:27:01.090:E/AndroidRuntime(420):at android.app (ActivityThread.java:1647) 03-27 23:27:01.090:E/AndroidRuntime(420) 03-27 23:27:01.090:E/AndroidRuntime(420):at android.app.ActivityThread.access $ 1500(ActivityThread.java:117) 03-27 23:27:01.090:E/AndroidRuntime(420):at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:931) 03-27 23:27:01.090:E/AndroidRuntime(420):at android.os.Handler.dispatchMessage(Handler.java:99) 03 -27 23:27:01.090:E/AndroidRuntime(420):在android.os.Looper.loop(Looper.java:123) 03-27 23:27:01.090:E/AndroidRuntime(420):在android。 app.ActivityThread.main(ActivityThread.java:3683) 03-27 23:27:01.090:E/AndroidRuntime(420):at java.lang.reflect.Method.invokeNative(Native Method) 03-27 23:27 :01.090:E/AndroidRuntime(420):at java.lang.reflect.Method.invoke(Method.java:507) 03-27 23:27:01.090:E/AndroidRuntime(420):at com.android.int ernal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839) 03-27 23:27:01.090:E/AndroidRuntime(420):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java: 597) 03-27 23:27:01.090:E/AndroidRuntime(420):at dalvik.system.NativeStart.main(Native Method) 03-27 23:27:01.090:E/AndroidRuntime(420):由:java.lang.NullPointerException 03-27 23:27:01.090:E/AndroidRuntime(420):at com.example.pluseonecalculator.MainActivity.onCreate(MainActivity.java:34) 03-27 23:27:01.090: E/AndroidRuntime(420):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 03-27 23:27:01.090:E/AndroidRuntime(420):at android.app.ActivityThread.performLaunchActivity(ActivityThread。 java:1611) 03-27 23:27:01.090:E/AndroidRuntime(420):... 11更多

+2

logcat输出中的错误是什么? – csmckelvey

+1

也发布activity_main.xml请 – donfuxx

+1

检查出MainActivity中的第34行,“add”可能为空。如果你想改进格式,请确保你已经从你的布局 –

回答

0

看起来你的按钮被指向null当你试图在这里设置监听器:

add.setOnClickListener(new View.OnClickListener() { 

确保存在与您activity_main的ID Badd的按钮。XML,否则findViewById将返回null

add = (Button) findViewById(R.id.Badd); 
0

你缺少你在activity_main按钮的XML代码。为了使用ID实例从Java代码中的按钮,你必须添加到您的activity_main.xml中:

<Button 
    android:id="@+id/Badd" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="My Button"/> 
0

你没有的activity_main.xml内的任何按钮。如果您使用findViewById,那么您必须具有<Button>(或任何您正在尝试查找的)元素作为主布局的子元素(在此例中为FrameLayout)。

<FrameLayout 
    android:stuff = "stuffystuff" 
    ... /> 
    <Button 
     android:id = "ThisIsTheIdThatWillBeFound // by findViewById(R.id.ThisIsTheIdThatWillBeFound) 
     .../> 
<FrameLayout> 

什么是目前发生的事情是,有没有R.id.Badd由于Android无法找到android:id = "@+id/Badd"什么从生成它。因此,NullPointerException

在你的情况下,将ID为BaddBsub的按钮添加到你的布局,你应该没有任何问题。您的按钮也必须具有其他属性。见here

另外,如果你是在以类似的方式,我会考虑使用你的主类为OnClickListener的两个按钮(而不是创建两个),当OnClick方法传递一个视图实现你的第二个按钮计划使用它的ID通过switch (view.getId())来控制程序流程。示例here