我有一个以Theme.Dialog为主题的活动。我希望在后者的onCreate或onStart期间将此活动从主活动开始(取决于首先检查的某些条件)。我的问题是,当“对话”活动以这种方式启动时,它不会显示。我得到一个空白的活动。
清单摘录
<activity android:name="CredentialsDialog"
android:label="Credentials"
android:theme="@android:style/Theme.Dialog">
</activity>
对话框布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="25dp"
android:gravity="center_vertical|center_horizontal">
<EditText android:id="@+id/txt_username"
android:hint="Your username"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</EditText>
<EditText android:id="@+id/txt_password"
android:hint="Your password"
android:password="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</EditText>
</LinearLayout>
CredentialsDialog片段:
public class CredentialsDialog extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_LEFT_ICON);
setContentView(R.layout.credentials_dialog);
getWindow().setTitle("This is just a test");
getWindow().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, android.R.drawable.ic_dialog_alert);
Bundle extras = getIntent().getExtras();
String user = extras.getString("user");
String pass = extras.getString("pass");
// get handle on EditText fields
final EditText textUser = (EditText) findViewById(R.id.txt_username);
final EditText textPass = (EditText) findViewById(R.id.txt_password);
// pre-populate dialog username EditText with username if it exists
if (user != "") {
textUser.setText(user);
}
// pre-populate dialog password EditText with password if it exists
if (pass != "") {
textPass.setText(pass);
}
}
}
MainActivity片段:
(in either onCreate or onStart)
if (!loginData()) {
loginDialog();
} else {
bLoggedIn = qrzLogin();
toggleUi();
}
(snip...)
public void loginDialog() {
Intent i = new Intent(this, CredentialsDialog.class);
i.putExtra("user", MainActivity.user);
i.putExtra("pass", MainActivity.pass);
startActivity(i);
}
在MainActivity
中,如果我在第一次之后立即第二次调用loginDialog()
,则第二次会在第一次是空白活动时工作。我究竟做错了什么?意见也欢迎。 :)
谢谢, 道格
答案 0 :(得分:1)
切换到覆盖onCreateDialog
和onPrepareDialog
,我可以在TextWatcher
的{{1}}字段中添加EditText
。无论如何,这是最终目标。另外,我不得不说我喜欢通过AlertDialog
进行对话处理。你可以教一个老狗新的技巧!