0

私は Java で配列を初めて使用します。最終プロジェクトでは、3000 のアクティビティを作成する代わりに、単一の配列を使用してすべての文字列を格納することにしました。私が今抱えている問題は、ボタンを押して画面上の文字列を変更すると、最後までスキップするか、何らかの形ですべて一緒に追加することです。一度に 1 つの文字列を表示したいのですが、私の人生ではそれを理解することはできません。

これが私のコードです:

public class MainActivity extends Activity {

    MediaPlayer Snake;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final String[] Lines = {"So begins the story of our hero.","His name is Solid Snake.","He is an international spy, an elite solider, and quite the ladies man.",
                "Snake likes to sneak around in his cardboard box.","Most enemies aren't smart enough to catch him in it."};
        Snake = MediaPlayer.create(this, R.raw.maintheme);
        Snake.start();
        final TextView tv = (TextView)findViewById(R.id.textView1);
        Button N = (Button)findViewById(R.id.next);
        Button B = (Button)findViewById(R.id.back);
        int count = 0;
        tv.setText(Lines[count]);

        N.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                String temp = "";
                for(int l=1; l<Lines.length; l++){
                    temp=temp+Lines[l];
                    tv.setText(""+temp);
                }

            }

            });
        };

主な問題は、ボタンを押すことです。私はどこでも検索しましたが、これに対する答えはまったく見つかりませんでした。どんな助けでも大歓迎です。

4

1 に答える 1

0

ボタンがクリックされると、配列内の各エントリを通じてテキストが変更され、最後のエントリで終了します。これはすぐに発生するため、最後の値のみが表示されます。

メソッドonClick()を変更して、setText()一度だけ呼び出し、アクティビティに保持されているカウンターをインクリメントする必要があります。

public class MainActivity extends Activity {
    private int currentLine = 0;
    ...
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        tv.setText(Lines[currentLine]);

        N.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if (currentLine + 1 < Lines.length) {
                    currentLine++;
                    tv.setText(Lines[currentLine]);
                }
            }
        });
        ...
    }
    ...
}
于 2013-05-04T22:02:17.287 に答える