0

这是我的小测试程序。我的问题是从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();
    }
}
4

1 回答 1

0

您可以使用数据库(SQLITE)来存储您的值..

于 2013-02-13T07:56:11.597 回答