私はアンドロイドスタジオを初めて使い、2つのスピナーを選択できるようにしてユーザーを入力してから「終了時刻」を設定するアプリを作成しました計算される。私はフィールドが選択されていないので、アプリケーションがクラッシュする 'VerifyButton'をクリックすると、このページにいくつかの検証を追加しようとしています。私の意図は、ユーザーが「VerifyButton」を選択したときに、エラーメッセージが表示され、スピナー値が入力されたことを意味します。これは、アプリがクラッシュしないことを意味します。私はonNothingSelected内でいくつかのメソッドを試してみましたが、うまくいかないようです。そこにあるのか、VerifyButtonにする必要があるのか分かりませんでしたか?前もって感謝します! spinner.setAdapter(myAdapter)後選択したスピナー値を有効にするか、ボタンを選択できません
スピナーのJava
final ArrayAdapter<String> myAdapter = new ArrayAdapter<String>(CreateLine.this,
R.layout.spinner_layout, getResources().getStringArray(R.array.LineTypes));
myAdapter.setDropDownViewResource(R.layout.spinner_layout);
spinner.setAdapter(myAdapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position2, long l) {
switch (position2) {
case 0:
quantity.setText("");
break;
case 1:
quantity.setVisibility(View.INVISIBLE);
timeadded = 10;
duration.setText(timeadded + " Hours");
spinner2.setVisibility(View.INVISIBLE);
break;
case 2:
quantity.setVisibility(View.INVISIBLE);
timeadded = 10;
duration.setText(timeadded + " Hours");
spinner2.setVisibility(View.INVISIBLE);
break;
case 3:
quantity.setVisibility(View.INVISIBLE);
timeadded = 10;
duration.setText(timeadded + " Hours");
spinner2.setVisibility(View.INVISIBLE);
break;
case 4:
quantity.setVisibility(View.VISIBLE);
duration.setText(timeadded + " Hours");
spinner2.setVisibility(View.VISIBLE);
Toast.makeText(getApplicationContext(), "Select Package Type", Toast.LENGTH_SHORT).show();
break;
case 5:
quantity.setVisibility(View.VISIBLE);
duration.setText(timeadded + " Hours");
spinner2.setVisibility(View.VISIBLE);
Toast.makeText(getApplicationContext(), "Select Package Type", Toast.LENGTH_SHORT).show();
break;
case 6:
quantity.setVisibility(View.VISIBLE);
duration.setText(timeadded + " Hours");
spinner2.setVisibility(View.VISIBLE);
Toast.makeText(getApplicationContext(), "Select Package Type", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
ArrayAdapter<String> myAdapter2 = new ArrayAdapter<String>(CreateLine.this,
R.layout.spinner_layout, getResources().getStringArray(R.array.PackageTypes));
myAdapter2.setDropDownViewResource(R.layout.spinner_layout);
spinner2.setAdapter(myAdapter2);
spinner2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {
switch (position) {
case 0:
quantity.setText("");
break;
case 1:
quantity.setText(PackageType20);
timeadded = 28;
duration.setText(timeadded + " Hours");
break;
case 2:
quantity.setText(PackageType30);
timeadded = 27;
duration.setText(timeadded + " Hours");
break;
default:
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
VerifyButtonジャワ
VerifyButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
spinnerSelection = String.valueOf(spinner.getSelectedItem());
spinnerSelection2 = String.valueOf(spinner2.getSelectedItem());
String q = quantity.getText().toString();
String d = duration.getText().toString();
DateTime datetime = new DateTime(yearNow, monthNow, dayNow, hourNow, minuteNow);
DateTimeFormatter fmt = DateTimeFormat.forPattern("EE dd MM yyyy" + "\n" + " h:mm a ");
String formattedtime = fmt.print(datetime);
CalculateButton.setText(formattedtime);
// Plus some hours, minutes, and seconds to the original DateTime.
DateTimeFormatter fmt2 = DateTimeFormat.forPattern("EE dd MM yyyy" + "\n" + " h:mm a ");
DateTime dateTime1 = datetime.plusHours(timeadded);
String endtimecalc = fmt2.print(dateTime1);
TextView endtime = findViewById(endtimetextView);
endtime.setVisibility(View.VISIBLE);
endtime.setText(endtimecalc);
if (spinnerSelection !=null) {
Toast.makeText(getApplicationContext(),"enter value",
Toast.LENGTH_LONG).show();
}
//INSERT DATA TO DATABASE
boolean isInserted = myDb.insertData(
spinnerSelection,
spinnerSelection2,
q,
d,
formattedtime,
endtimecalc);
if (isInserted == true)
Toast.makeText(CreateLine.this, "Data Inserted Successfully", Toast.LENGTH_LONG).show();
else
Toast.makeText(CreateLine.this, "This line is already Active!", Toast.LENGTH_LONG).show();
Intent intent = new Intent(getApplicationContext(), Dashboard.class);
startActivity(intent);
}
});
ときにアプリがクラッシュ
また、これに代えてチェックを適用どのようなログが言ったか教えていただけますか? –
値が入力されていないのでクラッシュするだけで、ボタンがスピナー値を選択しなければならない場合に有効です。 – Almac3
watは "quantity"& "duration"と表示されますか?これを確認すると、nullまたはdb挿入コードがエラーを起こします。スピナーのデフォルトの選択位置はゼロです。スピナーにデフォルトの選択があるため、onNothingselected()は起動できません。 –