首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何高效地编程?按下按钮时,创建相应的活动

如何高效地编程?按下按钮时,创建相应的活动
EN

Stack Overflow用户
提问于 2013-11-21 01:55:31
回答 4查看 118关注 0票数 1

我刚开始编程,所以我有一个很简单的问题。因为我真的不知道具体的条件,所以我找不到任何关于我的问题的话题,所以请原谅我是否曾经问过这个问题。

我的问题如下:我正在Android机器上运行一个用Eclipse创建的应用程序。在第一个屏幕上,我只有一个按钮列表:

layout_main:

代码语言:javascript
复制
<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"  />

如果我按下一个按钮,相应的活动就会开始。为了做到这一点,我对主要活动进行了如下编程:

主要活动:

代码语言:javascript
复制
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,否则什么也不做。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-11-21 02:21:07

对于特定情况,可以更改处理按钮调用的方式,例如,可以在单个方法中提供按钮in并检查按钮in。

代码语言:javascript
复制
<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是如何工作的,并试着理解它们为什么实现了每个关键字和语法元素。

票数 0
EN

Stack Overflow用户

发布于 2013-11-21 02:17:34

你可以给每个按钮一个这样的id:

代码语言:javascript
复制
<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:

代码语言:javascript
复制
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);
}

希望这能帮上忙。

票数 1
EN

Stack Overflow用户

发布于 2013-11-21 02:18:37

有很多方法可以实现你的目标。

备注:最好的解决方案是将android:id添加到布局文件中,但是如果由于某些原因不能这样做,则可以使用按钮文本。

在不改变布局文件的情况下,一个非常简单(虽然不是很好)的方法是查看按钮上的文本,如果所有按钮都有唯一的文本,并在此基础上执行操作。

代码语言:javascript
复制
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以调用此方法

代码语言:javascript
复制
android:onClick="onButtonClick"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20111001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档