0

我是 Java 数组的新手,对于我们的最终项目,我决定使用单个数组来容纳我的所有字符串,而不是创建 3000 个活动。我现在遇到的问题是,当我按下按钮更改屏幕上的字符串时,它要么跳到末尾,要么以某种方式将它们全部加在一起。我希望它一次显示一个字符串并且不能,因为我一生都想弄清楚。

这是我的代码:

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 回答