无法在子活动android studio中保存数据

时间:2017-12-06 19:20:44

标签: java android

在我回到父活动并返回到子活动后,在子活动的EditText中输入详细信息后,EditText值变为空白。我使用了下面提到的代码,但没有用。

下面提到的是childactivity.java详细信息。

任何人都可以提供帮助。

import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.TextView;

public class NotesActivity extends AppCompatActivity {
    String typedText;
    EditText inputTxt;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_notes);
        inputTxt = (EditText) findViewById(R.id.notes1);
    }

    @Override
    protected void onPause() {
        super.onPause();
        typedText = inputTxt.getText().toString();
    }


    @Override
    protected void onResume() {
        super.onResume();
        inputTxt.setText(typedText); 
    }            
}

2 个答案:

答案 0 :(得分:0)

即使您将val jmsSource: Source[Message, NotUsed] = JmsSource( JmsSourceSettings(connectionFactory) .withQueue("myqueue") .withAcknowledgeMode(AcknowledgeMode.ClientAcknowledge) ) val result = jmsSource .map { case textMessage: TextMessage => val text = textMessage.getText textMessage.acknowledge() text } .runWith(Sink.seq) 设置为typedText也会导致活动失败,因为下次从其他活动启动此活动时,将创建一个新实例,旧数据将会丢失。 您必须使用持久存储选项存储数据。 https://developer.android.com/guide/topics/data/data-storage.html

要在SharedPreferences中存储数据,您可以修改以下代码。

null

要检索您可以执行以下操作的值。

private final String PREFS_NAME = "packageName";

SharedPreferences sharedPref = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("typedText", inputTxt.getText().toString());
editor.commit();

答案 1 :(得分:0)

在父调用startActivityForResult(getApplicationContext(),NotesActivity.class)中调用子活动,即NotesActivity。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        Bundle extras = data.getExtras();
        String typedText = "" + extras.getString("TypedText");

    }
}

在Child活动中使用以下函数返回'typedText'

private void returnText() {
    Intent result = new Intent();
    String typedText = inputTxt.getText().toString();
    result.putExtra("TypedText", typedText);
    setResult(RESULT_OK, result);
} 


@Override
protected void onPause() {
    super.onPause();
    returnText();
}