一部の電話 (すべて 2.3.x) で NullPointerException を取得している Android アプリがありますが、私の電話 (2.3.x) またはシミュレーターでは取得していません。
特定の例外は、それが私のコード内で発生していることを示しているようには見えないので、同じ API の一部のバージョンが正しくないという呼び出しを行っていると思いますか? どうすればいいのかわからない。
logcat のエラー ログは次のとおりです。
01-23 14:25:33.614: D/AndroidRuntime(25648): Shutting down VM
01-23 14:25:33.614: W/dalvikvm(25648): threadid=1: thread exiting with uncaught exception (group=0x4001d648)
01-23 14:25:33.634: E/AndroidRuntime(25648): FATAL EXCEPTION: main
01-23 14:25:33.634: E/AndroidRuntime(25648): java.lang.NullPointerException
01-23 14:25:33.634: E/AndroidRuntime(25648): at android.widget.TextView.onTouchEvent(TextView.java:7479)
01-23 14:25:33.634: E/AndroidRuntime(25648): at android.view.View.dispatchTouchEvent(View.java:3932)
01-23 14:25:33.634: E/AndroidRuntime(25648): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:906)
01-23 14:25:33.634: E/AndroidRuntime(25648): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:906)
01-23 14:25:33.634: E/AndroidRuntime(25648): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:906)
01-23 14:25:33.634: E/AndroidRuntime(25648): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:906)
01-23 14:25:33.634: E/AndroidRuntime(25648): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:906)
01-23 14:25:33.634: E/AndroidRuntime(25648): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:906)
01-23 14:25:33.634: E/AndroidRuntime(25648): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:906)
01-23 14:25:33.634: E/AndroidRuntime(25648): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1784)
01-23 14:25:33.634: E/AndroidRuntime(25648): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1157)
01-23 14:25:33.634: E/AndroidRuntime(25648): at android.app.Activity.dispatchTouchEvent(Activity.java:2228)
01-23 14:25:33.634: E/AndroidRuntime(25648): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1759)
01-23 14:25:33.634: E/AndroidRuntime(25648): at android.view.ViewRoot.deliverPointerEvent(ViewRoot.java:2352)
01-23 14:25:33.634: E/AndroidRuntime(25648): at android.view.ViewRoot.handleMessage(ViewRoot.java:1992)
01-23 14:25:33.634: E/AndroidRuntime(25648): at android.os.Handler.dispatchMessage(Handler.java:99)
01-23 14:25:33.634: E/AndroidRuntime(25648): at android.os.Looper.loop(Looper.java:150)
01-23 14:25:33.634: E/AndroidRuntime(25648): at android.app.ActivityThread.main(ActivityThread.java:4293)
01-23 14:25:33.634: E/AndroidRuntime(25648): at java.lang.reflect.Method.invokeNative(Native Method)
01-23 14:25:33.634: E/AndroidRuntime(25648): at java.lang.reflect.Method.invoke(Method.java:507)
01-23 14:25:33.634: E/AndroidRuntime(25648): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
01-23 14:25:33.634: E/AndroidRuntime(25648): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
01-23 14:25:33.634: E/AndroidRuntime(25648): at dalvik.system.NativeStart.main(Native Method)
デバッガーからのスタック トレースは次のとおりです。
Thread [<1> main] (Suspended (exception NullPointerException))
ViewRoot.handleMessage(Message) line: 1994
ViewRoot(Handler).dispatchMessage(Message) line: 99
Looper.loop() line: 150
ActivityThread.main(String[]) line: 4293
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]
Method.invoke(Object, Object...) line: 507
ZygoteInit$MethodAndArgsCaller.run() line: 849
ZygoteInit.main(String[]) line: 607
NativeStart.main(String[]) line: not available [native method]
アクティビティが開始されるとすぐにエラーが発生します。デバッグ情報はコードのどこにも示されていませんが、何かが原因であると推測onCreate()
しているのでonCreate()
、問題のアクティビティは次のとおりです。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.player);
int pid = getIntent().getIntExtra("pid", -1);
mCurrSlide = null;
myPresentation = thingListVideos.getVideoByPID(pid);
loading = ProgressDialog.show(Player.this, "...",
"downloading stuff", true, true);
video_handler = new Handler() {
public void handleMessage(Message msg) {
loading.dismiss();
Log.v(TAG, "Dismissed Dialog");
videoView = (VideoView) findViewById(R.id.VideoView);
prepareVideoView(videoView);
videoView.requestFocus();
}
};
new Thread(new Runnable() {
@Override
public void run() {
mCurrSlideThread = new Thread() {
public void run() {
getTiming();
videoView.postDelayed(mCurrSlideThread, 1000);
}
};
sView = (LinearLayout) findViewById(R.id.LayoutS);
prepare(slideView);
video_handler.sendEmptyMessage(0);
}
}).start();
}
進行状況ダイアログが表示されず、実行した場合に実行した作業をログに記録するため、最後に作成する新しいスレッド内で実行する作業を実際に実行していないことを私は知っています携帯電話またはシミュレーターで実行すると実行されます)。
私はAndroidに少し慣れていないので、何が原因なのか、同じバージョンのAndroid APIが必要な場合でも、一部のデバイスで発生し、他のデバイスでは発生しない理由がわかりません。誰かが以前にこのようなものを見たことがある場合、または何が原因であるかについて何らかの考えがある場合は、どこを見ればよいかについてのいくつかの指針をいただければ幸いです.