我是android开发的新手,我想问一下如何在android应用程序启动时加载弹出窗口?的onCreate()?
我见过很多例子,但没有人满足我的需要。有没有办法在应用程序启动时加载弹出窗口?
谢谢
答案 0 :(得分:6)
执行此操作的最佳位置是您的活动的onStart
方法。基本上,我们需要:
这是一个简单的例子,但有很多选项可供选择。有关详细信息,请参阅http://developer.android.com/reference/android/app/Dialog.html。
<强> RES /布局/ dialog.xml 强>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:text="hello, world"
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button android:id="@+id/Button01"
android:layout_below="@id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="OK" />
</RelativeLayout>
在您的活动中
@Override
protected void onStart()
{
super.onStart();
final Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.dialog);
dialog.setTitle("Dialog box");
Button button = (Button) dialog.findViewById(R.id.Button01);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();
}
});
dialog.show();
}
答案 1 :(得分:1)
您想要创建一个新活动并通过Intent启动它。基本上,如果你想让它“感觉”像一个弹出窗口,你只需创建一个不占用屏幕宽度/高度100%的布局。
以下是如何做到这一点:
startActivity(new Intent(this, PopupActivity.class));
如果要在用户完成弹出活动时收到通知,可以使用startActivityForResult()而不是startActivity()启动它。这允许您在用户完成活动时收到回调。
我建议使用onResume()来启动,因为当用户第一次或以后的时间返回您的活动时,它总是被调用。
您需要保留一个表示应用程序状态的值,以便决定何时/是否显示PopupActivity。 Android会定期根据需要终止您的应用程序,因此,如果您没有实现某种持久性,那么当用户访问应用程序时,PopupActivity将始终显示。我将开始在您的主要活动中实现onSaveInstanceState()和onRestoreInstanceState()。
知道是否显示PopupActivity的一种简单方法是只有一个变量,例如popupShown
默认设置为false,弹出窗口后显示为true。在启动弹出窗口之前,请检查popupShown
是否为真。如上所述,保存应用程序的状态将确保您只在需要时显示弹出窗口。
了解Android如何管理活动的生命周期非常重要,否则您将浪费大量时间来了解为什么您的应用程序表现得很奇怪。我的第一个Android应用程序非常无法使用,因为我只是潜入并且没有完全理解生命周期。
如果您对生命周期位不完全确定,请仔细阅读:http://developer.android.com/reference/android/app/Activity.html