0

我还是安卓新手。我有一本儿童读物,我用两个按钮“读给我听”和“读给我自己读”。

Read to me onclick 会在阅读本书时播放录音,但会转到 SoundOne Activity。给自己读会显示文本,它会导致 PageOne Activity。

我如何创建某种“if 语句”,以便当我点击阅读给我时它会播放录音但会导致 PageOne 活动。当我单击自己阅读时,它会显示文本,但仍会导致 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();
            }

        });
    }
}
4

3 回答 3

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活动未使用,可以删除。的文档Intent告诉您可以在其中存储哪些其他信息。

于 2013-05-09T18:18:46.933 回答
-1

我不是专业的程序员,所以这可能不是最好的方法,但它对我来说用最少的代码就能很好地工作。

这就是我正在做的事情。

为我的 XML 中的按钮设置“onClick”

 <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);
}
于 2013-05-10T17:22:53.093 回答
-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;
  }
}
};
}
于 2013-05-09T12:24:13.750 回答