1

画面を回転させた後、戻るボタンを押そうとしています。私は、画面の回転でアクティビティがやろうとしていることを認識しています

  1. 最初のアクティビティでメッセージを入力
  2. 2 番目のアクティビティでメッセージを表示する
  3. onSaveInstanceState() で画面を回転させて「ata」を保存する
  4. 2回目の活動を再現
  5. 2 番目のアクティビティで戻るボタンを押す (1 番目のアクティビティを再作成 - onCreate() が呼び出される)

savedInstanceState は null ではないため、保存されたものを表示する必要があります。残念ながら、null が表示されています。これがコードです

最初のアクティビティ :-

package dummy.pack;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity implements CommonHandler{

public final static String EXTRA_MESSAGE = "dummy.MESSAGE";
public static String DISPLAY_MESSAGE;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    **if (savedInstanceState != null)
    {
        DISPLAY_MESSAGE = savedInstanceState.getString("message");
        DISPLAY_MESSAGE = DISPLAY_MESSAGE + " calling from create";
        getMessage();
    }**
    else
    {
        setContentView(R.layout.activity_main);
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

public void sendMessage(View view)
{
    Intent intent = new Intent (this, DisplayMessageActivity.class);
    EditText editText = (EditText) findViewById(R.id.edit_message);
    String message = editText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);
    startActivity(intent);
}

@Override
public void onStart() {
    super.onStart();

}

@Override
public void onStop(){
    super.onStop();

    System.gc();
}

**public void getMessage() {
    TextView textView = new TextView(this);
    textView.setTextSize(40);
    textView.setText(DISPLAY_MESSAGE);
    setContentView(textView);
}**

@Override
public void onRestart (){
    super.onRestart();
    DISPLAY_MESSAGE = "Normal 1";
    getMessage();
}

}

2 番目のアクティビティ :-

package dummy.pack;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.widget.TextView;

public class DisplayMessageActivity extends Activity implements CommonHandler{


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //Get the message from Intent
    Intent intent = getIntent();
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

    //Create the text view
    TextView textView = new TextView(this);
    textView.setTextSize(40);
    textView.setText(message);
    setContentView(textView);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_display_message, menu);
    return true;
}

@Override
**public void onSaveInstanceState(Bundle saveState) {
    saveState.putString("message","Recreate");
    super.onSaveInstanceState(saveState);
}**
}

どんな助けもかなりのものです。

4

1 に答える 1

0

マニフェスト ファイルのアクティビティに以下を追加します

<activity android:name="Activity name"
       android:configChanges="keyboardHidden|orientation|">

そしてこれはあなたの活動で

 if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){

    Log.e("On Config Change","LANDSCAPE");
}else{

    Log.e("On Config Change","PORTRAIT");
}

これがあなたの問題を解決することを願っています

于 2013-02-20T08:40:38.393 に答える