2017-02-02 4 views
0

Я хочу восстановить значение finalText и показать его в TextView, когда устройство вращается, но finalText не восстанавливает его значение. Я установил значение по умолчанию для finalText, чтобы проверить, отображается ли оно вместо этого. finalText - это переменная в onActivityResult(), поэтому я хочу восстановить значения, полученные в результате других действий.onRestoreInstanceState() не восстанавливает значение

public static final String EXTRA_MESSAGE = "EXTRA_MESSAGE"; 
public static final String REQUEST_RESULT = "REQUEST_RESULT"; 
public static final String KEY_COUNTER = "COUNTER"; 
private String finalText = "Default"; 

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

public void onClick(View view){ 
    Intent intent = new Intent(this, secondActivity.class); 
    EditText editText = (EditText) findViewById(R.id.text); 
    String text = editText.getText().toString(); 
    intent.putExtra(EXTRA_MESSAGE, text); 
    startActivityForResult(intent, 2); 
} 

@Override 
protected void onActivityResult(int comingFrom, int resultCode, Intent data){ 
    super.onActivityResult(comingFrom, resultCode, data); 
    if (resultCode == RESULT_OK){ 
     TextView textView = (TextView) findViewById(R.id.textView1); 
     finalText = Integer.toString(comingFrom) + Integer.toString(data.getIntExtra(REQUEST_RESULT, 0)) + resultCode; 
     textView.setText(finalText); 
    } 
} 

@Override 
protected void onSaveInstanceState(Bundle outState){ 
    super.onSaveInstanceState(outState); 
    outState.putString(KEY_COUNTER, finalText); 
} 

@Override 
protected void onRestoreInstanceState(Bundle savedInstanceState){ 
    super.onRestoreInstanceState(savedInstanceState); 
    finalText = savedInstanceState.getString(KEY_COUNTER); 
} 
+0

Вы можете получить finalText в OnCreate() метод тоже. –

+0

@Nishant Bhakta вы хотите сделать этот текстовый дисплей «По умолчанию», когда он вращается? или сохранить значение, которое вы получили из ActivityResult –

+0

@Charu ක Нет, я хочу, чтобы textView отображал значение, которое 'onActivityResult' получает в результате от другого действия. я просто установил «По умолчанию», чтобы проверить, что он отображает «По умолчанию» или значение, которое оно получило в результате. но ни один из них не отображается. Я сам изучаю андроид. –

ответ

0

Попробуйте

TextView textView; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    finalText = savedInstanceState.getString(KEY_COUNTER); 
    textView = (TextView) findViewById(R.id.textView1); 
    textView.setText(finalText); 
} 

@Override 
protected void onActivityResult(int comingFrom, int resultCode, Intent data){ 
    super.onActivityResult(comingFrom, resultCode, data); 
    if (resultCode == RESULT_OK){ 
    finalText = Integer.toString(comingFrom) + Integer.toString(data.getIntExtra(REQUEST_RESULT, 0)) + resultCode; 
    textView.setText(finalText); 
    } 
} 
+0

Должен ли я добавить 'onSaveInstacesState' и' onRestoreInstancesStare ' 'в этом классе. –

+0

Я уверен, вы должны сохранить поле. Я не добавил их, потому что в этих методах нет изменений – arjun

Смежные вопросы