คือผมได้ลองทำตามตัวอย่างในเว็บ http://www.brighthub.com/mobile/google-android/articles/27139.aspx
โดยผลออกมาคือรันผ่านทุกอย่างโอเค
แต่พอผมจะนำมาประยุกต์ใช้กับ app ที่ผมทำเองนั้นมันดันรันไม่ผ่าน
แต่ตอนเขียนโค้ดนั้น ก็ไม่ได้มี error ตรงที่ใดเลยครับจึงสงสัยว่าทำไม
ผมใช้ motodev ในการพัฒนาและผมก็ลองรันใน DDMS ดูพบว่า
ActivityThread.performLaunchActivity(ActivityThread$ActivityRecord) line: 2268
ActivityThread.handleLaunchActivity(ActivityThread$ActivityRecord) line: 2284
ActivityThread.access$1800(ActivityThread, ActivityThread$ActivityRecord) line: 112
ActivityThread$H.handleMessage(Message) line: 1692
ActivityThread$H(Handler).dispatchMessage(Message) line: 99
Looper.loop() line: 123
ActivityThread.main(String[]) line: 3948
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]
Method.invoke(Object, Object…) line: 521
ZygoteInit$MethodAndArgsCaller.run() line: 782
ZygoteInit.main(String[]) line: 540
NativeStart.main(String[]) line: not available [native method]
ผมไม่รู้เรื่องเลยว่ามันหมายความว่าอย่างไรครับ
ส่วนโค้ดนั้นอยู่ด้านล่างนี้ครับ
package tong.project.virtualPet;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class VirtualPet extends Activity {
private TextView energyShow=null;
private Button feed_Button=null;
private double energyVal=0;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initControl();
}
private void initControl() {
energyShow = (TextView)findViewById(R.id.energy_show);
feed_Button = (Button)findViewById(R.id.feedButton);
feed_Button.setOnClickListener(new View.OnClickListener(){
public void onClick(View v)
{
calculate();
}
});
}
private void calculate(){
energyVal = new Double(energyShow.getText().toString()) + 1;
energyShow.setText(Double.toString(energyVal));
}
}
ความหมายคือต้องการ debug ตัวแปลใช่ไหม ว่ามีค่าเท่าไร อะไรแบบนี้หรือป่าว
ตัวหนังสือยุ่งๆที่เห็นนั่นคือ stack trace ครับ
จะมันบอกว่าก่อนเจอ exception โปรแกรมเราผ่าน method อะไรเข้าไปกี่ชั้น
เริ่มตั้งแต่ตัว api มันยังไม่สร้าง activity ให้เราเลย
เริ่มที่นี่ NativeStart.main(String[])
แล้วก็ไล่ดูเอาว่าไปจบที่ไหน
มันจะบอก บรรทัดที่เกิด exception ขึ้นมาด้วย
ที่ดูในนี้น่าจะ copy มาไม่หมด
ปกติมันจะบอก cause มาด้วยว่า เกิด exception อะไร
stack trace ทำให้เราวินิฉัย error ง่ายขึ้นครับ