2012-05-11 8 views
0

Androidの会計プリンタ用の診断プロジェクトはほとんど行っていません。 印刷するときに問題が発生することがあります(用紙がありません)。その場合、問題があることを通知し、ユーザーに印刷を続行したいと尋ねるAlertDialogを開始したいと考えています。コンテキストに関係なくAlertDialogを起動するには? Android

現在前面に表示されているアクティビティに関係なく、infrontを表示するAlertDialogを作成します。

私はGetAplicationContext()メソッドを使用してAlertDialogを起動する通常の方法を試しましたが、ひどくクラッシュします。

05-11 17:36:56.162: W/dalvikvm(5458): threadid=3: thread exiting with uncaught exception (group=0x4001e390) 
05-11 17:36:56.162: E/AndroidRuntime(5458): Uncaught handler: thread main exiting due to uncaught exception 
05-11 17:36:56.182: E/AndroidRuntime(5458): java.lang.NullPointerException 
05-11 17:36:56.182: E/AndroidRuntime(5458):  at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:100) 
05-11 17:36:56.182: E/AndroidRuntime(5458):  at bg.barcodes.mobile.routes.java.BaseActivity.onCreateDialog(BaseActivity.java:21) 
05-11 17:36:56.182: E/AndroidRuntime(5458):  at bg.barcodes.mobile.routes.java.DatecsPrinter.Send(DatecsPrinter.java:319) 
05-11 17:36:56.182: E/AndroidRuntime(5458):  at bg.barcodes.mobile.routes.java.DatecsPrinter.sendText(DatecsPrinter.java:381) 
05-11 17:36:56.182: E/AndroidRuntime(5458):  at bg.barcodes.mobile.routes.java.StatusDatecsPrinter.doCommand(StatusDatecsPrinter.java:134) 
05-11 17:36:56.182: E/AndroidRuntime(5458):  at bg.barcodes.mobile.routes.java.StatusDatecsPrinter.access$0(StatusDatecsPrinter.java:118) 
05-11 17:36:56.182: E/AndroidRuntime(5458):  at bg.barcodes.mobile.routes.java.StatusDatecsPrinter$1.onClick(StatusDatecsPrinter.java:61) 
05-11 17:36:56.182: E/AndroidRuntime(5458):  at android.view.View.performClick(View.java:2364) 
05-11 17:36:56.182: E/AndroidRuntime(5458):  at android.view.View.onTouchEvent(View.java:4179) 
05-11 17:36:56.182: E/AndroidRuntime(5458):  at android.widget.TextView.onTouchEvent(TextView.java:6650) 
05-11 17:36:56.182: E/AndroidRuntime(5458):  at android.view.View.dispatchTouchEvent(View.java:3709) 
05-11 17:36:56.182: E/AndroidRuntime(5458):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:924) 
05-11 17:36:56.182: E/AndroidRuntime(5458):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:924) 
05-11 17:36:56.182: E/AndroidRuntime(5458):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:924) 
05-11 17:36:56.182: E/AndroidRuntime(5458):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:924) 
05-11 17:36:56.182: E/AndroidRuntime(5458):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1695) 
05-11 17:36:56.182: E/AndroidRuntime(5458):  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1116) 
05-11 17:36:56.182: E/AndroidRuntime(5458):  at android.app.Activity.dispatchTouchEvent(Activity.java:2068) 
05-11 17:36:56.182: E/AndroidRuntime(5458):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1679) 
05-11 17:36:56.182: E/AndroidRuntime(5458):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1708) 
05-11 17:36:56.182: E/AndroidRuntime(5458):  at android.os.Handler.dispatchMessage(Handler.java:99) 
05-11 17:36:56.182: E/AndroidRuntime(5458):  at android.os.Looper.loop(Looper.java:123) 
05-11 17:36:56.182: E/AndroidRuntime(5458):  at android.app.ActivityThread.main(ActivityThread.java:4595) 
05-11 17:36:56.182: E/AndroidRuntime(5458):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-11 17:36:56.182: E/AndroidRuntime(5458):  at java.lang.reflect.Method.invoke(Method.java:521) 
05-11 17:36:56.182: E/AndroidRuntime(5458):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
05-11 17:36:56.182: E/AndroidRuntime(5458):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
05-11 17:36:56.182: E/AndroidRuntime(5458):  at dalvik.system.NativeStart.main(Native Method) 
05-11 17:36:56.192: I/dalvikvm(5458): threadid=7: reacting to signal 3 
05-11 17:36:56.222: I/dalvikvm(5458): Wrote stack trace to '/data/anr/traces.txt' 

任意のアイデア:ここ

は、スタックトレースのですか?

+0

はgetapplicationContext()ですか? – kosa

+0

は、使用しているコンテキストに関連するだけでなく、現在のスレッドに関連している可能性があることに注意してください。また、エラーのスタックトレースを提供してください – Estragon

+0

[ダイアログ] [1]を使用することができます役立つことができます。 [1]:http://stackoverflow.com/questions/1979369/android-activity-as-a-dialog – Mufazzal

答えて

0

アクティビティの上にアラートダイアログが表示されるため、アクティビティのコンテキストを使用してダイアログオブジェクトを初期化する必要があります。したがって、技術的には、そのようなダイアログをアクティビティを参照することなく表示することは不可能です。

0

実行中の別のアクティビティを中断する方法はありません。しかし、あなたが探している機能の種類は、通知を使用することで満足されます。これは、実行中の活動の前にダイアログを表示しますが、何かがうまくいかないとき、ユーザはまだ通知されますされていません。

http://developer.android.com/guide/topics/ui/notifiers/notifications.html

1

MyApplicationクラスを作成し、getApplicationContext()を使用しようとしない、Applicationから継承されましたあなたはコンテキストを必要と転がっActivityを持っていない場合、あなたはどこでもMyApplication.getContext()を使用することができ、その後

public class MyApplication extends Application { 
    private static MyApplication instance; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     instance = this; 
     ......... 
    } 

    public static Context getContext() { 
     return instance; 
    } 

:、そのクラス内で次の操作を行います。

関連する問題