2014年5月30日 星期五

Android 【很抱歉,xxx已停止】

當遇到【很抱歉,xxx已停止】時,查看LogCat,找Caused by那行會顯示甚麼原因跳出錯誤, 下面那行會顯示哪個檔的第幾行出錯(java:xx),NullPointerException為常見空值錯誤, 此時用if或try catch來除錯
if else
if(someObject != null) {
    someObject.doSomething(); //錯誤行放裡面
} else {
   Log.i("Tag","空值"); // do something other
}
try catch
try {
    someObject.doSomething(); //錯誤行放裡面
} catch(NullPointerException e) {
    Log.i("Tag","空值"); // do something other
}
參考來源:http://stackoverflow.com/questions/2931065/how-to-handle-nullpointerexception-in-java

2014年5月29日 星期四

Android Exit

離開程式時。跳出框框告知是否離開 1.MainActivity.java
/*離開程式*/
 @Override
 public boolean onKeyDown(int keycode, KeyEvent event) {
  if (keycode == KeyEvent.KEYCODE_BACK) {
   closeApp(); //當按下離開按鍵時,運行closeApp()
   return true;
  }
  return super.onKeyDown(keycode, event);
 }

 public void closeApp() {
  new AlertDialog.Builder(MainActivity.this) //建立跳出框框,MainActivity為主程式名稱
    .setTitle("確定離開本程式?") //設定離開標語
    .setNegativeButton("離開", new DialogInterface.OnClickListener() { //離開按鈕監聽事件
     public void onClick(DialogInterface dialog, int which) { //按下後執行動作
      android.os.Process.killProcess(android.os.Process
        .myPid()); //殺死進程,離開後將不會再運行任何功能
     }
    })
    .setPositiveButton("繼續", new DialogInterface.OnClickListener() { //繼續按鈕監聽事件
     public void onClick(DialogInterface dialog, int which) { //按下後繼續程式
     }
    }).show();
 }
2.其他AlertDialog API還可設定圖片setIcon,訊息setMessage等,參閱 AlertDialog API:http://developer.android.com/reference/android/app/AlertDialog.html

2014年5月28日 星期三

Android Button

1.建立Button元件 activity_main.xml




2.建立字串 strings.xml
CheckMe
3.建立監聽事件 MainActivity.java
 private Button button1; //宣告button
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  button1 = (Button) findViewById(R.id.button1); //初始化,從activity_main.xml抓到id
  start_button.setOnClickListener(new Button.OnClickListener() { //建立監聽事件

   @Override
   public void onClick(View v) { //點擊button動作
    // TODO Auto-generated method stub
    output.setText("Button被點了"); //如要使用其他動作可另外寫ex:run(v);
   }

  });
  button1.performClick(); //performClick()為自動按按鈕,必須放在監聽事件後面
 }

Android CheckBox

1.建立checkBox元件
activity_main.xml






2.建立字串
strings.xml
CheckMe

3.建立監聽事件 MainActivity.java
 private CheckBox checkBox1; //在onCreate上面先宣告
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  checkBox1 = (CheckBox) findViewById(R.id.checkBox1); //初始化,從activity_main.xml抓到id
  checkBox1.setChecked(true); //預設為以勾選,false為預設取消勾選
  checkBox1.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener() { //建立監聽事件
  
   @Override
   public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
    // TODO Auto-generated method stub
    if (checkBox1.isChecked()) { //isChecked()判斷是否以勾選
     output.setText("以勾選"); //這裡如要帶入動作則要使用buttonView,ex:run(buttonView);
    } else {
     output.setText("取消勾選");
    }
   }
  
  });

 }