2013-05-08 61 views
0

使用两个按钮我还是新到Android。我有一本儿童书,我已经做了两个按钮“读我”和“读到自己”。一个活动

读给我听的onclick,因为它读这本书将播放录音,但它去SoundOne活动。 阅读自己将显示文本,并导致PageOne活动。

如何l创建某种形式的“if语句”,使得当升点击阅读对我来说会播放录音,但导致PAGEONE活动。在L单击读取到自己也能显示文字,但仍然会导致PAGEONE活动

这可能有助于减少l的到目前为止创建类的数量,避免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(); 
      } 

     }); 
    } 
} 

回答

0

Intent机制被用于从一个Activity到相互通信。在Intent以及要开始的类中,您可以指定要执行的操作的名称以及其他选项。在这种情况下,您可能需要使用多余的来告诉以下班级是否播放声音。当您启动意图:

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告诉你还有哪些其他信息可以存储在那里。

+0

感谢Dan有效 – user1964291 2013-05-22 10:30:40

+0

如果此答案解决了您的问题,请单击左侧的绿色复选标记以将其标记为正确。这是堆栈溢出方式表示感谢,并让其他访问者知道问题已解决。 – 2013-05-22 11:44:06

-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; 
    } 
} 
}; 
} 
+0

这是什么答案? – Siddharth 2013-05-09 18:25:15

-1

我不是一个专业的程序员,所以这可能不是这样做的最佳方式,但它很适合我用最少的代码。

下面是我在做什么。

在我的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); 
}