Я пытаюсь создать диалоговое окно с несколькими вопросами. Кажется, что все работает нормально, ожидаю, что я не могу получить результат Numberpicker + У меня есть протекающее окно в конце
Это мой код:
final Context context = this;
int currentshape, goalshape=9,qnumber=1,gender,age; // 0 = lean , 1 = fat , 2 = skinny fat || 0 = shredded , 1 = powerlifter, 2 = bodybuiler.
int height,weight;
Boolean flag=false,flag2=false,flag3=false;
int year;
Button[] current, goals; // buttons
public static final String PREFS_NAME = "MyApp_Settings";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.question1);
current = new Button[3];
goals = new Button[3];
current[0] = (Button) findViewById(R.id.btnLean);
current[1] = (Button) findViewById(R.id.btnFat);
current[2] = (Button) findViewById(R.id.btnSkinnyFat);
for (int i = 0; i < 3; i++)
current[i].setOnClickListener(this);
}
public void questions1() {
Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.question2);
if(flag2 == false)
dialog.show();
Button[] btn = new Button[3];
btn[0] = (Button) dialog.findViewById(R.id.btnShrededd);
btn[1] = (Button) dialog.findViewById(R.id.btnBodyBuilding);
btn[2] = (Button) dialog.findViewById(R.id.btnPowerLifting);
for (int i = 0; i < 3; i++)
btn[i].setOnClickListener(this);
if(flag2 == true) {
dialog.dismiss();
}
this.flag2=true;
}
private double parseDouble(String s){
if(s == null || s.isEmpty())
return 0.0;
else
return Double.parseDouble(s);
}
public void questions2() {
Dialog dialog2 = new Dialog(context);
dialog2.setContentView(R.layout.question3);
if(flag == false && flag3 == false) {
dialog2.show();
Button[] btn = new Button[3];
final NumberPicker[] tv = new NumberPicker[3];
tv[0] = (NumberPicker) dialog2.findViewById(R.id.weight);
tv[1] = (NumberPicker) dialog2.findViewById(R.id.height);
tv[2] = (NumberPicker) dialog2.findViewById(R.id.age);
btn[0] = (Button) dialog2.findViewById(R.id.btnmale);
btn[1] = (Button) dialog2.findViewById(R.id.btnwomen);
btn[2] = (Button) dialog2.findViewById(R.id.btnsetupfinish);
for (int i = 0; i < 3; i++) {
btn[i].setOnClickListener(this);
tv[i].setMinValue(1);
tv[i].setMaxValue(150);
}
if (flag == true && flag3 == false) {
this.weight = tv[0].getValue();
this.height = tv[1].getValue();
this.age = tv[2].getValue();
this.flag3 = true;
}
}
if (flag3){
dialog2.dismiss();
}
flag = true;
}
@Override
protected void onPause() {
super.onPause();
questions2();
Log.d("crash",this.weight + " " + this.height);
}
public void updatesharepref(){
SharedPreferences sharedPref = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnLean:
this.currentshape = 0;
questions1();
break;
case R.id.btnFat:
this.currentshape = 1;
questions1();
break;
case R.id.btnSkinnyFat:
this.currentshape = 2;
questions1();
break;
case R.id.btnShrededd:
this.goalshape=0;
questions2();
break;
case R.id.btnPowerLifting:
this.goalshape=1;
questions2();
break;
case R.id.btnBodyBuilding:
this.goalshape=2;
questions2();
break;
case R.id.btnmale:
this.gender=1;
break;
case R.id.btnwomen:
this.gender=2;
break;
case R.id.btnsetupfinish:
flag=true;
questions2();
Intent intent = new Intent(this,MainActivity.class);
startActivity(intent);
finish();
break;
}
Я знаю, что код не самый красивый, но я новичок. Я пытался задать несколько диалоговых вопросов, чтобы получить информацию о пользователе. После завершения диалогов я не могу получить номер в виджете NumberPicker, так как он всегда возвращает 0. Плюс вопросы questions2 все время протекает.
Журнал ошибок:
E/WindowManager: android.view.WindowLeaked: Activity com.example.gold.mnfitness.First_login has leaked window DecorView@5ed0dc1[] that was originally added here
at android.view.ViewRootImpl.<init>(ViewRootImpl.java:485)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:346)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:92)
at android.app.Dialog.show(Dialog.java:330)
at com.example.gold.mnfitness.First_login.questions2(First_login.java:82)
at com.example.gold.mnfitness.First_login.onClick(First_login.java:144)