从onCreate或onStart开始活动

时间:2011-08-16 01:35:26

标签: android

我有一个以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(),则第二次会在第一次是空白活动时工作。我究竟做错了什么?意见也欢迎。 :)

谢谢, 道格

1 个答案:

答案 0 :(得分:1)

切换到覆盖onCreateDialogonPrepareDialog,我可以在TextWatcher的{​​{1}}字段中添加EditText。无论如何,这是最终目标。另外,我不得不说我喜欢通过AlertDialog进行对话处理。你可以教一个老狗新的技巧!