Android 屏幕方向更改后,指向发布的Runnable中的错误UI

Android 屏幕方向更改后,指向发布的Runnable中的错误UI,android,Android,这是我的小测试程序。我的问题是,通过run()方法,我访问了错误(旧)活动的字段,这些字段在屏幕方向更改后被销毁。处理这种情况的方法是什么? 顺便说一下,我必须重新创建我的活动,因为在实际应用中,我有不同的纵向和横向模式布局 public class MainActivity extends Activity { private EditText edit; private Button button; private ProgressDialog progressDia

这是我的小测试程序。我的问题是,通过run()方法,我访问了错误(旧)活动的字段,这些字段在屏幕方向更改后被销毁。处理这种情况的方法是什么? 顺便说一下,我必须重新创建我的活动,因为在实际应用中,我有不同的纵向和横向模式布局

public class MainActivity extends Activity {
    private EditText edit;
    private Button button;
    private ProgressDialog progressDialog;
    private boolean isLoginInProgress = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        edit = (EditText) findViewById(R.id.edit_timer);

        button = (Button) findViewById(R.id.btn_start);
        button.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    if (edit.getText().toString().length() == 0) throw new Exception();
                    long dTime = Long.parseLong(edit.getText().toString());
                    new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            MainActivity.this.isLoginInProgress = false;
                            progressDialog.dismiss();
                        }
                }, dTime);

                    progressDialog.show();
                    isLoginInProgress = true;
                } catch (Exception e) {
                    Toast.makeText(MainActivity.this, "bad time value", Toast.LENGTH_SHORT).show();
                }


            }
        });

        progressDialog = new ProgressDialog(this);
        progressDialog.setMessage("loading");

        if (savedInstanceState != null) { // activity is restarted
            isLoginInProgress = savedInstanceState.getBoolean("fl_login");
            edit.setText(savedInstanceState.getString("edit"));
        }

        if (isLoginInProgress) { // Show dialog again
            progressDialog.show();
        }
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        outState.putBoolean("fl_login", isLoginInProgress);
        outState.putString("edit", edit.getText().toString());
    }

    @Override
    public void onDestroy(){
        super.onDestroy();
        progressDialog.dismiss();
    }
}
您可以使用数据库(SQLITE)存储您的值