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