1

メモ帳アプリにユーザー用のライン カウンターがあります。ただし、アプリが横向きと縦向きの場合、テキストの量がEditText占有するスペースが少なくなるため、行数も少なくなります。そのため、回転時に行数を更新する必要があります。

その問題を解決するために私がしたことは次のとおりです。

次のメソッドをクラスに追加し、これをマニフェストのアクティビティに追加しました。android:configChanges="orientation|screenSize"

私はそれをテストしましたが、画面が回転したときにメソッドを実行しています。

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

    TextView linesDisplay = (TextView)findViewById(R.id.linesDisplay);
    EditText editText = (EditText)findViewById(R.id.editText);

    editText.setText("" + editText.getText().toString()); // this was just a test to see if the Edit Text needed to be "internally constructed"
    linesDisplay.setText("Lines: " + editText.getLineCount());

}

縦書きで5行書いたところ、「Lines: 5」とうまく表示されました。次に、横向きに回転すると、「Lines: 5」のままでした (実際には横向きで 4 本の線でした)。再び縦向きに回転すると、「Lines: 4」になりました。再び、ランドスケープに戻ると、「Lines: 5」になりました。

回転するたびに、そのの向きの行数が表示されるようです。つまり、横向きに回転すると縦向きの行数が表示され、縦向きに戻すと横向きの行数が表示されます。

P --> "Lines: 5" (正解)
L --> "Lines: 5" (4 のはず)
P --> "Lines: 4" (5 のはず)
L --> "Lines: 5" ( 4)
...

^ 逆も同じように機能します。たとえば、横向きで開始して前方に回転し続けると、上記の状況と同じように (最初の回転の後) 1 つ後ろになります。

何か助けはありますか?実際に回転する前にコードを実行しているためと思われるため、行数が本来あるべき数よりも遅れています。画面が完全に回転したことを確認した後にコードを実行する方法はありますか?

4

1 に答える 1