在一个Activity上使用两个按钮

时间:2013-05-08 05:35:50

标签: button if-statement android-activity

我还是Android新手。我有一本儿童书,我已经完成了两个按钮“READ TO ME”和“READ TO MYSELF”。

读给我看onclick将播放录音,因为它会读到书,但它会转到SoundOne Activity。 自我阅读将显示文本,并导致PageOne活动。

如何创建某种“if语句”,以便当我点击向我看时,它将播放录音,但会导致PageOne Activity。当我点击自己阅读时它会显示文字,但仍然会导致PageOne Activity

这可能有助于减少到目前为止已创建的类的数量,并避免ANR假设。一些源代码或教程将有助于提前感谢我的代码如下:

package com.inerds.donkiejoukie;

import android.content.Intent;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.content.Context;

public class Fbone extends MainActivity {
    MediaPlayer one;
    MediaPlayer mb;
    MediaPlayer mp;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fbone);
        one = MediaPlayer.create(this, R.raw.pageone);
        mb = MediaPlayer.create(this, R.raw.menubar);
        mp = MediaPlayer.create(this, R.raw.pageflip);
        ImageButton imageButton1 = (ImageButton) findViewById(R.id.imageButton1);
        imageButton1.setOnClickListener (new OnClickListener() {
            public void onClick(View vone) {
                mb.pause();
                mb.stop();
                mp.start();
                startActivity(new Intent(getApplicationContext(), PageOne.class));
                finish();
            }

        });
        ImageButton readtome = (ImageButton) findViewById(R.id.readtome);
        readtome.setOnClickListener (new OnClickListener() {
            public void onClick(View v) {
                mb.pause();
                mb.stop();
                one.start();
                startActivity(new Intent(getApplicationContext(), SoundOne.class));
                AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
                audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 100, 0);
                finish();
            }

        });
    }
}

3 个答案:

答案 0 :(得分:0)

Intent机制用于从一个Activity进行通信。在Intent以及要启动的类中,您可以指定要执行的操作的名称以及其他选项。在这种情况下,您可能希望使用 extra 告诉以下类是否播放声音。当你开始意图时:

Intent nextActivity = new Intent(getApplicationContext(), SoundOne.class);
// Put true or false in the next line according to which click handler you're in.
nextActivity.putBooleanExtra(SoundOne.extra_enableSound, true);
startActivity(nextActivity);

然后在您的SoundOne活动中,您需要一个额外名称的常量字段:

static final String extra_enableSound = "enableSound";

你可以从onCreate或者想要开始声音的任何地方找到这个额外的值:

if (getIntent().getBooleanExtra(extra_enableSound, false)) {
    // start the sound
}

现在您的PageOne活动未使用,可以删除。 documentation for Intent会告诉您可以存储的其他信息。

答案 1 :(得分:-1)

我不是专业的程序员,所以这可能不是最好的方法,但是对于我来说,只需要很少的代码就可以。

这就是我正在做的事情。

设置" onClick"对于我的XML中的按钮      

 <Button
    android:id="@+id/button2"
    android:layout_width="144dp"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@id/button1"
    android:onClick="sendMessage1"
    android:text="@string/cancel"
     />

在我设置按钮的活动中

    Button button1;
Button button2;

然后使用sendmessage而不是onButtonclick

public void sendMessage(View view) 
{
    Intent intent = new Intent(this, ThirdActivity.class);
    startActivity(intent);
}
public void sendMessage1(View view) 
{
    Intent intent = new Intent(this, MainActivity.class);
    startActivity(intent);
}

答案 2 :(得分:-2)

package com.inerds.donkiejoukie;    

public class Fbone extends MainActivity {

MediaPlayer one;
MediaPlayer mb;
MediaPlayer mp;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fbone);
        one = MediaPlayer.create(this, R.raw.pageone);
    mb = MediaPlayer.create(this, R.raw.menubar);
    mp = MediaPlayer.create(this, R.raw.pageflip);
    ImageButton imageButton1 = (ImageButton) findViewById(R.id.imageButton1);     
    ImageButton readtome = (ImageButton) findViewById(R.id.readtome);
    imageButton1.setOnClickListener (handleOnClickListener);
    readtome.setOnClickListener (handleOnClickListener);

}

private OnClickListener handleOnClickListener = new OnClickListener() {
    public void onClick(View v) {

     switch(v.getId()){

  case R.id.imageButton1: 
   mb.pause();
        mb.stop();
        mp.start();
        startActivity(new Intent(getApplicationContext(), PageOne.class));
        finish();
       break;

  case R.id.readtome:
        mb.pause();
        mb.stop();
        one.start();
        startActivity(new Intent(getApplicationContext(), SoundOne.class));
        AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
         audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 100, 0);
         finish();
       break;
  }
}
};
}