0

私はまだアンドロイドに慣れていません。「READ TO ME」と「READ TO MYSELF」の 2 つのボタンで作成した子供向けの本があります。

Read to me onclick は、本を読みながら録音を再生しますが、SoundOne アクティビティに移動します。独り言を読むとテキストが表示され、PageOne アクティビティにつながります。

「read to me」をクリックすると録音が再生され、PageOne アクティビティにつながるように、何らかの「if ステートメント」を作成するにはどうすればよいですか。そして、自分自身に読んでクリックすると、テキストが表示されますが、それでも PageOne アクティビティにつながります

これは、これまでに作成したクラスの数を減らし、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;

次に、onButtonclick の代わりに sendmessage を使用します

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 に答える