0

アプリケーションの通知からポップアップを表示していますが、通知を確認すると、アプリケーションからアクティビティが実行されていないため、ダイアログを表示すると通知が表示されます。アクティビティが実行されておらず、ダイアログ コンストラクターに渡すコンテキストが null であるため、ダイアログは例外をスローします。そのため、アクティビティが実行されていないときにコンテキストが必要です。または、事前にこれを実装する方法についてのアイデア

4

5 に答える 5

0

あなたのコードは Android のバックグラウンドで実行されていると思いますService。その場合、 yourServiceContextそれ自体なので、必要なときに使用できます。

コードが Android ではなくバックグラウンド スレッドで実行されているService場合 (この場合、他の大きな問題があります)、アプリケーション コンテキストのインスタンスを使用できます。を呼び出して取得し、バックグラウンド コードを開始するContext.getApplicationContextで取得して、後で使用できるようにキャッシュすることができます。Activity

ただし、アクティビティ コンテキストの代わりにアプリケーション コンテキストを使用すると、特定の落とし穴があることに注意してください。たとえば、LayoutInflaterアプリケーション コンテキストから使用することはできません。

于 2012-11-06T05:55:18.203 に答える
0

ダイアログを拡張し、Activity クラスを作成して、そのテーマをマニフェスト ファイルのダイアログに変更できます。この場合、 を呼び出しますnotification.setLatestEventInfo(YourActivityDialog.this, contentTitle, contentText, contentIntent);

于 2012-11-06T05:40:48.057 に答える
0

私は同じ問題に苦しんでいました。アクティビティでスピナーを使用できません。setContentView次のようなものを使用してこれを解決しました

public void onCreate(Bundle savedInstanceState) 
{   
 super.onCreate(savedInstanceState);
 View viewToLoad = LayoutInflater.from(this.getParent()).inflate(R.layout.main, null);
        this.setContentView(viewToLoad);
}

ダイアログに別のアクティビティを使用する別の方法。次のようにアクティビティを設定することにより、

style.xml

<resources>

    <style name="AppTheme" parent="android:Theme.Dialog">
        <item name="android:windowNoTitle">true</item>
    </style>

</resources>

AndroidManifest では、このようなアクティビティを宣言します

<activity
android:name="DialogActivity"
android:theme="@style/AppTheme" />
于 2012-11-06T05:42:48.657 に答える
0
@Override
    protected Dialog onCreateDialog(int i) 
    {
               LayoutInflater factory = LayoutInflater.from(this);
               final View textEntryView = factory.inflate(R.layout.sendemail, null);
               final View textEntryView1 = factory.inflate(R.layout.sendemail_title, null);
              to_id = (EditText) textEntryView.findViewById(R.id.edit_text_sender_mail_id);
              from_id =(EditText) textEntryView.findViewById(R.id.id);
              pwd =(EditText) textEntryView.findViewById(R.id.pwd);


               return new AlertDialog.Builder(current_activity.this)
                   .setTitle("hello")
                   .setCustomTitle(textEntryView1)
                   .setView(textEntryView)
                   .setPositiveButton("Send", new DialogInterface.OnClickListener() 
                   {
                       public void onClick(DialogInterface dialog, int whichButton)
                       {

                    // code here...    
                       }
                   })
                   .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int whichButton)
                       {
                            System.exit(0);
                       }
                   })
                   .create();


    }
于 2012-11-06T05:46:09.307 に答える
0

MyApplicationから継承されたクラスを作成Applicationし、そのクラス内で次のことを行うことができます。

public class MyApplication extends Application {
    private static MyApplication instance;

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

    public static Context getContext() {
        return instance;
    }

その後、コンテキストが必要で、横たわってMyApplication.getContext()いない場合は、どこでも使用できます。Activity

于 2012-11-06T05:50:55.730 に答える