package com.X.cclt;import java.util.ArrayList;
import java.util.List;import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;  
import android.widget.ArrayAdapter;
import android.widget.Button;  
import android.widget.Spinner;
import android.widget.TextView;public class MainActivity extends Activity {    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        find_and_modify_button();
        find_and_modify_view();
    }    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }  
    
Spinner spinner_Oper;
private ArrayAdapter<String> aspnOper;
private List<String> allOpers;

private static final String[] mOpers = { "+" ,"-", "*","/", "^"};

private void find_and_modify_view() {
spinner_Oper = (Spinner) findViewById(R.id.spinOper);
allOpers = new ArrayList<String>();
for (int i = 0; i < mOpers.length; i++) {
allOpers.add(mOpers[i]);
}
aspnOper = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, allOpers);
aspnOper
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner_Oper.setAdapter(aspnOper);
}

Button press_com=(Button) findViewById(R.id.buttonCom);
Button press_clear=(Button) findViewById(R.id.buttonClear);
Button press_quit=(Button) findViewById(R.id.buttonQuit);
TextView show_res=(TextView)findViewById(R.id.textRes);

private void find_and_modify_button(){
press_com.setOnClickListener(button_com_listener);
press_clear.setOnClickListener(button_clear_listener);
press_quit.setOnClickListener(button_quit_listener);
}

private Button.OnClickListener button_com_listener = new Button.OnClickListener() {
public void onClick(View v) {
show_res.setText("Hello!");
}
};

private Button.OnClickListener button_clear_listener = new Button.OnClickListener() {
public void onClick(View v) {
show_res.setText("Hello!");
}
};

private Button.OnClickListener button_quit_listener = new Button.OnClickListener() {
public void onClick(View v) {
show_res.setText("Hello!");
}
};
    

}我的MainActivity.java代码,
每次在AVD上运行时都要提示不正常结束,然后强行关闭,
我怀疑是红色的代码有错误,因为没有这些代码时是可以正常运行的。

解决方案 »

  1.   

    在LogCat里面有详细的出错信息,贴上来就知道了。
      

  2.   

    Logcat里面的错误:07-13 03:39:07.324: E/AndroidRuntime(275): FATAL EXCEPTION: main
    07-13 03:39:07.324: E/AndroidRuntime(275): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.hzhi.cclt/com.hzhi.cclt.MainActivity}: java.lang.NullPointerException
    07-13 03:39:07.324: E/AndroidRuntime(275):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
    07-13 03:39:07.324: E/AndroidRuntime(275):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
    07-13 03:39:07.324: E/AndroidRuntime(275):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
    07-13 03:39:07.324: E/AndroidRuntime(275):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
    07-13 03:39:07.324: E/AndroidRuntime(275):  at android.os.Handler.dispatchMessage(Handler.java:99)
    07-13 03:39:07.324: E/AndroidRuntime(275):  at android.os.Looper.loop(Looper.java:123)
    07-13 03:39:07.324: E/AndroidRuntime(275):  at android.app.ActivityThread.main(ActivityThread.java:4627)
    07-13 03:39:07.324: E/AndroidRuntime(275):  at java.lang.reflect.Method.invokeNative(Native Method)
    07-13 03:39:07.324: E/AndroidRuntime(275):  at java.lang.reflect.Method.invoke(Method.java:521)
    07-13 03:39:07.324: E/AndroidRuntime(275):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    07-13 03:39:07.324: E/AndroidRuntime(275):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    07-13 03:39:07.324: E/AndroidRuntime(275):  at dalvik.system.NativeStart.main(Native Method)
    07-13 03:39:07.324: E/AndroidRuntime(275): Caused by: java.lang.NullPointerException
    07-13 03:39:07.324: E/AndroidRuntime(275):  at android.app.Activity.findViewById(Activity.java:1637)
    07-13 03:39:07.324: E/AndroidRuntime(275):  at com.hzhi.cclt.MainActivity.<init>(MainActivity.java:46)
    07-13 03:39:07.324: E/AndroidRuntime(275):  at java.lang.Class.newInstanceImpl(Native Method)
    07-13 03:39:07.324: E/AndroidRuntime(275):  at java.lang.Class.newInstance(Class.java:1429)
    07-13 03:39:07.324: E/AndroidRuntime(275):  at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
    07-13 03:39:07.324: E/AndroidRuntime(275):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)
    07-13 03:39:07.324: E/AndroidRuntime(275):  ... 11 more

      

  3.   

    android.app.Activity.findViewById,是不是有id你没在xml中定义?
      

  4.   

    在这里找com.hzhi.cclt.MainActivity.<init>(MainActivity.java:46)
    Caused by: java.lang.NullPointerException空指针异常
      

  5.   

    Button press_com=(Button) findViewById(R.id.buttonCom);
    Button press_clear=(Button) findViewById(R.id.buttonClear);
    Button press_quit=(Button) findViewById(R.id.buttonQuit);
    TextView show_res=(TextView)findViewById(R.id.textRes);
    这些代码你是写在哪里的?在执行这个代码的之前,setContentView(R.layout.activity_main);执行了没有??
      

  6.   

    setContentView里面是执行了view相关的所有操作,其中一项就是inflate view.