1

xml レイアウト ファイルの定義を使用して、通常の方法で作成されたActivitywith があります。TextViewfindViewById

メソッドで作成されたハンドラーを使用して、TextView のテキストを更新していますonCreate()

向きを切り替えるとTextView、 が同じ から更新されなくなりましたHandler

私の xml 定義が の値を示している場合、ビューにはandroid:text="blabla"表示"blabla"されますが、それ以上更新することはできません。

何が起こっていますか?!

4

3 に答える 3

0

u の向きを切り替えると、android は新しいビューを作成します。その mHandler を揮発性にすることをお勧めします。1 つの方向のみを使用することにした場合は、ランドスケープandroid:screenOrientation用に Android マニフェストにアクティビティ タグを追加します。

于 2012-06-21T16:25:23.363 に答える
0

これ以上更新できないのは、Activity 参照が異なるためです。

最初に作成されたアクティビティ「A」には、ハンドラ「a」があります。

これで、ハンドラー 'a' は、アクティビティ 'A' に属するビューのみを更新できます。

したがって、オリエンテーションが発生すると、Activity 'A' が破棄され、Activity 'B' とハンドラー 'b' が作成されます。

したがって、「a」は画面の前にある「B」のビューを更新できません。

迅速な解決策として、モバイルの向きが回転したときにアクティビティの再作成を無効にすることをお勧めします。

AndroidManifest.xml

<activityandroid:name=".MyActivity"
          android:configChanges="orientation|keyboardHidden|screenSize"
          android:label="@string/app_name">

アクティビティ

@Override
public void onConfigurationChanged(Configuration newConfig){
    super.onConfigurationChanged(newConfig);

    // Checks the orientation of the screen
    if(newConfig.orientation ==Configuration.ORIENTATION_LANDSCAPE){
        Toast.makeText(this,"landscape",Toast.LENGTH_SHORT).show();
    }elseif(newConfig.orientation ==Configuration.ORIENTATION_PORTRAIT){
        Toast.makeText(this,"portrait",Toast.LENGTH_SHORT).show();
    }
}

オリエンテーション時に onCreate が呼び出されなくなりました。

于 2014-11-07T07:57:35.000 に答える
-1

使ってみて、

@Override
public void onConfigurationChanged(Configuration newConfig) {

  super.onConfigurationChanged(newConfig);

  if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
      //your code
  } else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
     //your code
  }
}
于 2012-06-21T15:37:44.063 に答える