单击返回按钮恢复编辑文本字段


public class MainActivity extends Activity implements SurfaceHolder.Callback {
EditText , PatientInfo,PatientAge,PatientId;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);   
    Button buttonStartCameraPreview = (Button)findViewById(R.id.startcamerapreview);
    Button buttonStopCameraPreview = (Button)findViewById(R.id.stopcamerapreview);
    Button buttonCapturePreview = (Button) findViewById(R.id.Capturecamerapreview);
    rgGender = (RadioGroup) findViewById(R.id.rgGender);
    rdbMale = (RadioButton) findViewById(R.id.rdbMale);
    rdbFemale = (RadioButton) findViewById(R.id.rdbFemale);
    PatientInfo = (EditText) findViewById(R.id.PatientName);
    PatientInfo.setHint("enter patient name");
    PatientAge = (EditText) findViewById(R.id.Age);
    PatientAge.setHint("Age");
    PatientId = (EditText) findViewById(R.id.PatientId);
    PatientId.setHint("PatientId");
    getWindow().setFormat(PixelFormat.UNKNOWN);
    surfaceView = (SurfaceView)findViewById(R.id.surfaceView);
    surfaceHolder = surfaceView.getHolder();
    surfaceHolder.addCallback(this)
     rawCallback = new PictureCallback() 
    {
        public void onPictureTaken(byte[] data, Camera camera)
        {
            Log.d("Log", "onPictureTaken - raw");
        }
    };
    shutterCallback = new ShutterCallback()
    {
        public void onShutter() {
            Log.i("Log", "onShutter'd");
        }
    };
    jpegCallback = new PictureCallback()
    {
        public void onPictureTaken(byte[] data, Camera camera) 
        {   
            loadInput();
            int imageNum = 0;
            String Name = PatientInfo.getText().toString();
                 String Age =  PatientAge.getText().toString();
                String Id = PatientId.getText().toString();         
            Intent imageIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
             Date d = new Date();
             CharSequence s  = DateFormat.format("MM-dd-yy hh-mm-ss", d.getTime());
             Rname = s.toString() +".jpg";
 File imagesFolders = new File(Environment.getExternalStorageDirectory().toString() + "/" + Name + Age + gender + Id);
             imagesFolders.mkdirs();
            File output = new File(imagesFolders, Rname);
  Uri uriSavedImage = Uri.fromFile(output);
            imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
            OutputStream imageFileOS;
            try {
                imageFileOS = getContentResolver().openOutputStream(uriSavedImage);
                imageFileOS.write(data);
                imageFileOS.flush();
                imageFileOS.close();

                Toast.makeText(MainActivity.this, 
                        "Image saved: ", 
                        Toast.LENGTH_LONG).show();
                } 
            catch (FileNotFoundException e) 
                {
                e.printStackTrace();
                } 
            catch (IOException e)
            {
                e.printStackTrace();
            } 
            finally
            {}
            Log.d("Log", "onPictureTaken - jpeg");
 }
  buttonStartCameraPreview.setOnClickListener(new Button.OnClickListener()
 {
  ........
 }
 buttonCapturePreview.setOnClickListener(new OnClickListener()
     {...}
 buttonStopCameraPreview.setOnClickListener(new Button.OnClickListener(){
  ......}
  public void onRadioButtonClicked(View view) {
    boolean checked = ((RadioButton) view).isChecked();

    switch(view.getId()) 
    {
        case R.id.rdbMale:
            if (checked)
                gender= "M";
                gender1="M";
            rdbFemale.setChecked(false);
            break;
        case R.id.rdbFemale:
            if (checked)
                gender = "F";
            gender1="F";
            rdbMale.setChecked(false);
            break;
    }
    }
      Button backButton = (Button) findViewById(R.id.back);
    backButton.setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
         finish();  
         Intent intent = new Intent(MainActivity.this, MainActivity.class);
         saveInput();
         startActivity(intent);

        }
    });
}
protected void saveInput()
{ 
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
preferences.edit().putString("Name",PatientInfo.getText().toString()).commit();  
preferences.edit().putString("Age", PatientAge.getText().toString()).commit(); 
preferences.edit().putString("Id",PatientId.getText().toString()).commit(); 
}
private void loadInput(){
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
    String savedTextN = preferences.getString("Name", null);
    String savedTextA = preferences.getString("Age", null);
    String savedTextI = preferences.getString("Id", null);
    PatientInfo.setText(savedTextN);   
    PatientAge.setText(savedTextA);
    PatientId.setText(savedTextI);
   System.out.println(savedTextN);
   System.out.println(savedTextA);
   System.out.println(savedTextI);
}

我正在尝试加载我在第一个活动中输入的相同数据。单击按钮时,数据是lodt。所以我使用了共享首选项。但是我第一次使用它,所以我的代码有问题。我只是尝试加载其中一个编辑文本。任何人都可以指出错误是什么

你做错了。 错误的事情是

  1. 仅恢复您尝试重新启动整个活动的数据。
  2. 您正在自己调用onResume方法。

不要做这些,你可以通过跟随轻松做到这一点。

  1. 创建一个将为您的执行初始数据设置任务的方法。
  2. 在 onResume of you 方法(或在 oncreate 中)调用该方法
  3. 每当您想要重置数据(即按下后退按钮后)时,请调用该方法。

您使用错误的键错误地从首选项中获取数据。

当您使用onResume方法和loadInput方法中的键Name将值存储在首选项中时,您正在尝试使用首选项中不可用的PatientInfo键获取它。

更改loadInput方法,如下所示:

private void loadInput(){
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
    String savedText = preferences.getString("Name");
    PatientInfo.setText(savedText);   
}

由于 onResume 方法总是在onCreate之前被调用,因此您需要在 onResume 方法中初始化PatientInfo视图,然后尝试将其值存储到首选项中。

最新更新