0

我正在从我的应用程序通知中显示一个弹出窗口。但是当我检查我的通知时,我的应用程序中没有任何活动正在运行,因此当我显示对话时在通知中。对话引发异常,因为没有活动正在运行,并且我传递给对话构造函数的上下文为空,因此在没有活动正在运行时我需要一个上下文,提前感谢。或者任何想法我可以如何实现这个提前谢谢

4

5 回答 5

0

我会假设您的代码在 Android 的后台运行Service。如果是这样的话,你Service就是一个Context本身,所以你可以在需要的时候使用它。

您的代码在后台线程中而不是在 Android 中运行Service(在这种情况下您还有其他大问题),您可以使用应用程序上下文的实例。你通过调用得到一个Context.getApplicationContext,你可以在Activity启动你的后台代码并缓存它以供以后使用。

请注意,虽然使用应用程序上下文而不是活动上下文存在某些问题 - 例如,您不能LayoutInflater从应用程序上下文中使用。

于 2012-11-06T05:55:18.203 回答
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

您可以使您的对话框扩展和 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

您可以创建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 回答