Android:两个按钮,但按下一个按钮的动作仅在按下另一个按钮后发生

时间:2013-05-19 21:31:52

标签: android button onclick switch-statement

我的应用程序中有两个按钮,一个用于启动Google Voice,另一个用于退出应用程序。但是,当我按下语音按钮时,直到我按下退出按钮之后它才会执行任何操作。因此,该应用程序退出,但随后谷歌语音启动。

public void onClick(View v) {

    switch(v.getId()){
        case R.id.btnDisable:{
            //Set the ringer to normal
            audio.setRingerMode(2);
            //Close the text-to-speech engine 
            tts.shutdown();
            //Welcome.bt.disable();
            activity.finish();
            onDestroy();
            break;
        }

        case R.id.btnVoice: {
            System.out.println ("pressed");
            Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
            intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "en_US");

            try {
                startActivityForResult(intent, RESULT_SPEECH);
            } catch (ActivityNotFoundException a) {
                Toast t = Toast.makeText(getApplicationContext(),
                        "Opps! Your device doesn't support Speech to Text",
                        Toast.LENGTH_SHORT);
                t.show();
            }
            break;
        }
    }
}

3 个答案:

答案 0 :(得分:1)

试试这个示例,这项工作正常,根据您的xmls和文件调整名称,您将使用该部分进行管理

public class FindEventsActivity extends Activity implements OnClickListener{

//lots of other code up here
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);             
    setContentView(R.layout.adds);

    findViewById(R.id.bAdd).setOnClickListener(this);
    findViewById(R.id.bSub).setOnClickListener(this);
}

public void onClick(View v) {

    switch(v.getId()){
        case R.id.bAdd:
            //Set the ringer to normal
            System.out.println("Button 1");
            break;

        case R.id.bSub:
            System.out.println ("Button 2");                
            break;
    }
}
}

如果您仍然没有看到问题,请分享更多代码。

希望这有助于并享受您的工作

答案 1 :(得分:1)

您应该使用android:onClick XML属性,或者将onClickListener应用于您的按钮。这些都是处理onClicks的标准方法。

======== onClick in XML ========

在XML中:

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="someMethodName"
    />

在您的活动中:

public void someMethodName(View v){
    //Do something
}

======== onClickListener ========

XML中的

<Button
    android:id="@+id/someID"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    />

在您的活动中:

Button myButton = (Button) findViewById(R.id.someID);
myButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            //Do something

        }
    });

我真的没见过这两种方法的任何差异,我建议使用其中任何一种(或两种)。两者都是处理onClicks的可接受方式。

答案 2 :(得分:0)

尝试将中断放在禁用按钮代码<} p的结束“}”下