没有活动正在运行时需要上下文

时间:2012-11-06 05:32:40

标签: android android-layout

我正在显示来自我的应用程序通知的弹出窗口。但是当我检查我的通知时,我的应用程序没有运行任何活动,所以当我显示对话时通知。对话抛出异常,因为没有活动正在运行,并且我传递给对话构造函数的上下文为null因此我需要一个上下文,因为事先没有活动正在运行。或者任何想法我如何能够提前实现这一点

5 个答案:

答案 0 :(得分:0)

您可以在清单文件中进行对话扩展和Activity类,并将其主题更改为对话框。在这种情况下,您拨打notification.setLatestEventInfo(YourActivityDialog.this, contentTitle, contentText, contentIntent);

答案 1 :(得分: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" />

答案 2 :(得分: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();


    }

答案 3 :(得分: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

答案 4 :(得分:0)

我认为您的代码是在Android Service的后台运行的。如果是这种情况,那么Service本身就是Context,因此您可以在需要时使用它。

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

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