EditText并使用按钮提交它们

时间:2011-04-24 16:20:25

标签: java android button android-edittext

所以基本上我希望这允许用户输入文本(他们的名字)。然后单击提交按钮,该按钮将该名称存储到数组中并删除EditText中的写入(以及为玩家制作计数器)。在完成提交玩家姓名后,我希望他们能够点击播放按钮(标题为“我相信完成”)并继续到下一页,并发送所有信息。

我目前的问题是,当我输入一个名字并点击提交时,强制关闭。如果我单击播放按钮,它会强制关闭。认为你可以帮助我吗?感谢

第1课:

public class Class1 extends Activity
{  
int players=0;
String names[];

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.class1);

    final EditText input = (EditText) findViewById(R.id.nameinput);


    Button submitButton = (Button) findViewById(R.id.submit_btn);
    submitButton.setOnClickListener(new View.OnClickListener()
    {
        public void onClick(View submit1)
        {
            players++;
            for(int i=0; i < players; i++)
            {
                names[i] = input.getText().toString();
                input.setText("");
            }
        }
    });

    Button doneButton = (Button) findViewById(R.id.done_btn);
    doneButton.setOnClickListener(new View.OnClickListener()
    {
        public void onClick(View done1)
        {
            Intent done = new Intent(Class1.this, Class2.class);
            done.putExtra("players", players);
            done.putExtra("names", names[players]);
            startActivity(done);
        }
    });
}

4 个答案:

答案 0 :(得分:1)

您没有在任何地方分配变量names。你应该这样做:

names = new String[NO_OF_PLAYERS];

如果您对NO_OF_PLAYERS不确定,请使用

ArrayList<String> names = new ArrayList<String>();

并使用它:

names.add(input.getText().toString());

答案 1 :(得分:0)

我不确定这可能是原因,但需要注意:

提交按钮的onclick方法:

  public void onClick(View submit1)
    {
        players++;
        for(int i=0; i < players; i++)
        {
            names[i] = input.getText().toString();
            input.setText("");
        }
    }

您可以在这里增加players个计数器。然后从0循环到玩家计数器。在循环中,您可以在names数组中分配输入文本。最后你清除输入。

这不是正确的方法。您尚未初始化名称数组。你也不应该每次都循环。它将覆盖names数组中的旧值。下一次循环input.getText()将返回空白,因为您在第一次进入循环时已经从输入中删除了文本。

应该是

public void onClick(View submit1)
{
    names[players++] = input.getText().toString();
    input.setText("");
}

如果您调试代码,您将更好地理解我想说的内容。

答案 2 :(得分:0)

您的程序崩溃是因为您尝试访问未初始化的阵列。您必须使用String names[] = new String[MAX_COUNT]创建数组对象。

答案 3 :(得分:0)

请尝试使用此编辑的代码,

  public class Class1 extends Activity
    {  
    static int players;
    static String names[];
    static  //this is called once when class is first time used.
   {
     players=-1;
   }

    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.class1);

        final EditText input = (EditText) findViewById(R.id.nameinput);


        Button submitButton = (Button) findViewById(R.id.submit_btn);
        submitButton.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View submit1)
            {
                players++;
                names[players] = input.getText().toString();
                input.setText("");
            }
        });

        Button doneButton = (Button) findViewById(R.id.done_btn);
        doneButton.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View done1)
            {
                Intent done = new Intent(Class1.this, Class2.class);
                done.putExtra("players", players);
                done.putExtra("names", names[players]);
                startActivity(done);
            }
        });
    }