我试图从主要活动转移到第二个活动到意图: 第一个是空意图,当我按下按钮时,它会转到第二个活动。 第二个是当我在文本视图中写入一些文本时,它将此文本传递给第二个活动。 问题是当我按下第一个按钮时它会出错,但是当我传递文本时工作正常。代码:
public class MainActivity extends Activity implements OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnSoundBubble=(Button) findViewById(R.id.btnSoundBubble);
Button btnSoundFrog=(Button) findViewById(R.id.btnSoundFrog);
Button btnSend=(Button) findViewById(R.id.btnSend);
btnSoundBubble.setOnClickListener(this);
btnSoundFrog.setOnClickListener(this);
btnSend.setOnClickListener(this);
final ImageView iv=(ImageView) findViewById(R.id.iv);
iv.setBackgroundResource(R.anim.anima);
iv.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
AnimationDrawable anim= (AnimationDrawable) iv.getBackground();
anim.start();
}
});
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnSoundBubble:
Intent intent = new Intent(this, Second.class);
startActivity(intent);
MediaPlayer mpB=MediaPlayer.create(MainActivity.this, R.raw.bubble);
mpB.start();
break;
case R.id.btnSoundFrog:
MediaPlayer mpF=MediaPlayer.create(MainActivity.this, R.raw.frog_croaking);
mpF.start();
Intent intent1=new Intent(this,Third.class);
startActivity(intent1);
break;
case R.id.btnSend:
String g;
EditText editText1=(EditText) findViewById(R.id.editText1);
g=editText1.getText().toString();
Intent intent2=new Intent(this,Second.class);
intent2.putExtra("name", g);
startActivity(intent2);
break;
}
}
}
第二项活动
public class Second extends Activity implements OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
EditText editText2=(EditText) findViewById(R.id.editText2);
Intent intent=new Intent(this,MainActivity.class);
editText2.setText("You tapped: "+getIntent().getExtras().getString("name"));
final ImageView imageView=(ImageView) findViewById(R.id.imageView2);
imageView.setBackgroundResource(R.anim.anima);
imageView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
AnimationDrawable anim=(AnimationDrawable) imageView.getBackground();
anim.start();
}
});
Button btnBack=(Button) findViewById(R.id.btnBack);
btnBack.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Intent intent=new Intent(this, MainActivity.class);
startActivity(intent);
}
}
意图1(对第三项活动)工作正常。
答案 0 :(得分:1)
按钮1的代码:
case R.id.btnSoundBubble:
Intent intent = new Intent(this, Second.class);
startActivity(intent);
MediaPlayer mpB=MediaPlayer.create(MainActivity.this, R.raw.bubble);
mpB.start();
break;
在开始其他活动后,您正在创建MediaPlayer
的对象。这不是正确的做法。
你能做什么:
1。)
case R.id.btnSoundBubble:
final Runnable r = new Runnable() {
public void run() {
MediaPlayer mpB=MediaPlayer.create(MainActivity.this, R.raw.bubble);
mpB.start();
}
};
handler.postDelayed(r, 1000);
Intent intent = new Intent(this, Second.class);
startActivity(intent);
break;
2)。
case R.id.btnSoundBubble:
Intent intent = new Intent(this, Second.class);
startActivity(intent);
break;
然后在SecondActivity的OnCreate
:
MediaPlayer mpB=MediaPlayer.create(MainActivity.this, R.raw.bubble);
mpB.start();
答案 1 :(得分:0)
在这种情况下,您不会向第二个活动发送任何数据
case R.id.btnSoundBubble:
Intent intent = new Intent(this, Second.class);
startActivity(intent);
MediaPlayer mpB=MediaPlayer.create(MainActivity.this, R.raw.bubble);
mpB.start();
break;
但在这种情况下,您要将数据发送到第二个活动
case R.id.btnSend:
String g;
EditText editText1=(EditText) findViewById(R.id.editText1);
g=editText1.getText().toString();
Intent intent2=new Intent(this,Second.class);
intent2.putExtra("name", g);
startActivity(intent2);
break;
在第二项活动中,您总是可以获得这样的额外内容。
EditText editText2=(EditText) findViewById(R.id.editText2);
Intent intent=new Intent(this,MainActivity.class);
editText2.setText("You tapped: "+getIntent().getExtras().getString("name"));
请在案例1中提供一些数据我提及或执行这样的检查。
if(getIntent().getExtras()!=null)
{
//do you code here..
}