所以基本上我希望这允许用户输入文本(他们的名字)。然后单击提交按钮,该按钮将该名称存储到数组中并删除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);
}
});
}
答案 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);
}
});
}