我刚开始编程,所以我有一个很简单的问题。因为我真的不知道具体的条件,所以我找不到任何关于我的问题的话题,所以请原谅我是否曾经问过这个问题。
我的问题如下:我正在Android机器上运行一个用Eclipse创建的应用程序。在第一个屏幕上,我只有一个按钮列表:
layout_main:
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="@string/alpha"
android:onClick="alpha" />
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="@string/beta"
android:onClick="beta" />如果我按下一个按钮,相应的活动就会开始。为了做到这一点,我对主要活动进行了如下编程:
主要活动:
public void alpha(View view) {
Intent intent = new Intent(this, AlphaActivity.class);
startActivity(intent); }
public void beta(View view) {
Intent intent = new Intent(this, BetaActivity.class);
startActivity(intent); }由于我有许多按钮,我将有很多次的操作公开无效,如上文所示。难道没有更有效的编程方法吗?例如:启动新活动,如果选择alpha,则启动活动alpha,如果选择beta启动activity,否则什么也不做。
发布于 2013-11-21 02:21:07
对于特定情况,可以更改处理按钮调用的方式,例如,可以在单个方法中提供按钮in并检查按钮in。
<Button
android:id="@+id/alpha_button"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="@string/alpha"
android:onClick="onButtonClick" />
<Button
android:id="@+id/beta_button"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="@string/beta"
android:onClick="onButtonClick" />
public void onButtonClick(View view) {
Intent intent;
switch (view.getId()) {
case R.id.alpha_button:
intent = new Intent(this, AlphaActivity.class);
break;
case R.id.beta_button:
intent = new Intent(this, BetaActivity.class);
break;
default:
return;
}
startActivity(intent);
}然而,我建议您当前的代码是明确和简洁的,所以只需保留它的原样。解决问题的方法有很多,特别是在软件设计方面。
不过,一般来说,编程语言试图平衡代码(更重要的是它的功能或用途)易于阅读/理解,同时尽量保持语法的简洁性。随着时间的推移,您将了解每种语言及其语法的优缺点,有些语言在解决某些类型的问题时会更好,而对于解决其他语言则过于冗长。现在,只需了解Java是如何工作的,并试着理解它们为什么实现了每个关键字和语法元素。
发布于 2013-11-21 02:17:34
你可以给每个按钮一个这样的id:
<Button
android:id="@+id/alpha"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="@string/alpha"
/>
<Button
android:id="@+id/beta"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="@string/beta"
/>然后,在主要活动中,您可以找到两个按钮并给出onclicklistener按钮,然后您可以像这样实现onclicklistener:
public void onClick(View v) {
Intent i = new Intent();
switch(v.getid()){
case: R.id.alpha:
i.setClass(context,AlphaActivity.class);
break;
case: R.id.beta:
i.setClass(context,BetaActivity.class);
break;
}
startActivity(i);
}希望这能帮上忙。
发布于 2013-11-21 02:18:37
有很多方法可以实现你的目标。
备注:最好的解决方案是将android:id添加到布局文件中,但是如果由于某些原因不能这样做,则可以使用按钮文本。
在不改变布局文件的情况下,一个非常简单(虽然不是很好)的方法是查看按钮上的文本,如果所有按钮都有唯一的文本,并在此基础上执行操作。
public void onButtonClick(View view)
{
//Cast the click View into a Button
Button selectedButton = (Button) view;
Intent intent = new Intent();
String buttonText = selectedButton.getText().toString();
if(buttonText.equals("beta"))
{
intent = new Intent(this, BetaActivity.class);
}
else if(buttonText.equals("alpha"))
{
intent = new Intent(this AlphaActivity.class);
}
startActivity(intent);
}确保为布局文件中的每个按钮设置onClick以调用此方法
android:onClick="onButtonClick"https://stackoverflow.com/questions/20111001
复制相似问题