两个对话框在彼此的顶部,我想一个接一个(Android)

时间:2013-11-21 02:25:00

标签: android dialog

因此,在函数中,我调用另外两个创建对话框的函数,但只显示一个对话框(showName中的名称)。

有什么想法吗?这是我的代码:

void showDialogs() {
    showEula();
    showName();
}
void showName () {
    final Dialog dialog = new Dialog(this);
    dialog.setContentView(R.layout.name);

    dialog.setTitle(res.getString(R.string.nameTitle));
    dialog.setCancelable(false);
    //eula objects
    final Button OK = (Button) dialog.findViewById(R.id.OK);
    final CheckBox remember = (CheckBox) dialog.findViewById(R.id.rememberName);
    final TextView name = (TextView) dialog.findViewById(R.id.name);
    if(getSharedPreferences("Settings", MODE_PRIVATE).getBoolean("rememberName",false) == true){

        name.setText(getSharedPreferences("Settings", MODE_PRIVATE).getString("Name", "Type Your Name Here"));
    }



    remember.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v){
            SharedPreferences.Editor editor = getSharedPreferences("Settings", MODE_PRIVATE).edit();
            if (remember.isChecked())  {
                editor.putBoolean("rememberName",true);
                editor.commit();
            } else {
                editor.putBoolean("rememberName",false);
                editor.commit();
            }
        }

    } );

    OK.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            SharedPreferences.Editor editor = getSharedPreferences("Settings", MODE_PRIVATE).edit();
            editor.putString("Name", name.getText().toString());
            editor.commit();
            if (getSharedPreferences("Settings", MODE_PRIVATE).getString("Name", "Type Your Name Here") == "Type Your Name Here") {
                nameEntered = false;

            } else {
                nameEntered = true;
            }
            dialog.dismiss();
            c.start();
        }
    });

    dialog.show();

}
void showEula () {
    final Dialog dialog = new Dialog(this);
    dialog.setContentView(R.layout.eula);

    dialog.setTitle(res.getString(R.string.eulaTitle));
    dialog.setCancelable(false);
    //eula objects
    final Button submit = (Button) dialog.findViewById(R.id.submit);
    final CheckBox agree = (CheckBox) dialog.findViewById(R.id.agree);
 /*
    TextView agreementStatement = (TextView) dialog.findViewById(R.id.la);
    agreementStatement.setText(R.string.eula);

   agree.setText(R.string.agreement);
    submit.setText(R.string.submit);*/

    /**/
 //*

   // dialog.setCancelable(false);

  agree.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v){
           // Button  submit = (Button) findViewById(R.id.submit);
            if (agree.isChecked())  {
            submit.setEnabled(true);
            } else {
                submit.setEnabled(false);
            }
  }

} );
     submit.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            SharedPreferences.Editor editor = getSharedPreferences("Settings", MODE_PRIVATE).edit();
            editor.putBoolean("accepted",true);
            editor.commit();
            dialog.dismiss();
            showEulaComplete = true;
            //c.start();
        }} );
    dialog.show();
}

给出的代码块之外的变量:

protected CountDown c;
protected boolean nameEntered;

CountDown是我制作的一个扩展了CountDownTimer的类,它运行得很好。我已经多次测试过了。

Pwease帮助

1 个答案:

答案 0 :(得分:0)

使用线程或AsyncTasks。一个接一个地打电话。或者使用任何旗帜值。