Я работаю над приложением, которое, когда вы идете на экран, вы выбираете свое местоположение из диалогового окна, созданного в пределах onCreate
. После выбора местоположения он записывает его в предсказанный TextView
. Проблема, с которой я сталкиваюсь, - это когда ориентация экрана меняет ее, она воссоздает диалог, и я пытаюсь не запускать функцию диалога.Не запускать функцию onRestoreInstanceState
Вот основные сведения о том, что у меня есть в файле класса.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.emergpolice);
form_location = (TextView) findViewById(R.id.input_location);
if(form_location == null || form_location.getText().equals("")){
setLocation();
}
}
@Override
protected void onSaveInstanceState(Bundle outState){
super.onSaveInstanceState(outState);
outState.putString("LOCATION", (String)form_location.getText());
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState){
super.onRestoreInstanceState(savedInstanceState);
form_location.setText(savedInstanceState.getString("LOCATION"));
}
public void setLocation(){
db = new DatabaseHandler(this);
db.open();
final CharSequence[] locOpt = {getString(R.string.dialog_items_current_location),getString(R.string.dialog_items_home),getString(R.string.dialog_items_enter_manually)};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(getString(R.string.header_choose_location));
builder.setSingleChoiceItems(locOpt, -1, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item){
if(locOpt[item].equals(getString(R.string.dialog_items_home))){
Cursor cur = db.userInfo();
String address = cur.getString(cur.getColumnIndex("address"));
String city = cur.getString(7);
String county = cur.getString(8);
String state = cur.getString(9);
String zip = cur.getString(10);
db.close();
form_location.setText(address + ", " + city + ", " + county + ", " + state + ", " + zip);
}
if(locOpt[item].equals(getString(R.string.dialog_items_current_location))){
Toast.makeText(getApplicationContext(), locOpt[item], Toast.LENGTH_SHORT).show();
}
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
И TextView
в моей раскладке
<TextView
android:id="@+id/input_location"
android:layout_width="wrap_content"
android:layout_below="@+id/text_location"
android:layout_height="wrap_content"
android:text="" />
Насколько стрельбы setLocation()
это попробовали несколько сценариев, чтобы проверить длину строки, будь то нуль или нет. Когда экран меняется, он показывает исходное выбранное местоположение, но все же запускает диалог.
Спасибо, @Luksprog и Рац оба ответа были очень полезны, и оба были в состоянии сделать это. Я даже читал об этом месяц назад, но просто не мог вспомнить. – Bobby