Android 如何将不同类型的意图转移到另一项活动?
我正试图从主要活动转移到第二个活动,以达到以下目的: 第一个是空的意图,当我按下一个按钮时,它进入第二个活动。 第二个是当我在文本视图中编写一些文本时,它会将这些文本传递给第二个活动。 问题是,当我按下第一个按钮时,它会给出一个错误,但当我传递文本时,它工作正常。守则:Android 如何将不同类型的意图转移到另一项活动?,android,android-intent,Android,Android Intent,我正试图从主要活动转移到第二个活动,以达到以下目的: 第一个是空的意图,当我按下一个按钮时,它进入第二个活动。 第二个是当我在文本视图中编写一些文本时,它会将这些文本传递给第二个活动。 问题是,当我按下第一个按钮时,它会给出一个错误,但当我传递文本时,它工作正常。守则: public class MainActivity extends Activity implements OnClickListener { @Override protected void onCreate(Bundle
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(到第三个活动)工作正常。在这种情况下,您不会向第二个活动发送任何数据
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;
但在这种情况下,您将向第二个活动发送数据
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"));
if(getIntent().getExtras()!=null)
{
//do you code here..
}
请在我提到的案例1中提供一些数据,或执行类似的检查
EditText editText2=(EditText) findViewById(R.id.editText2);
Intent intent=new Intent(this,MainActivity.class);
editText2.setText("You tapped: "+getIntent().getExtras().getString("name"));
if(getIntent().getExtras()!=null)
{
//do you code here..
}
按钮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.)
(二)
然后在第二个活动的OnCreate
中:
MediaPlayer mpB=MediaPlayer.create(MainActivity.this, R.raw.bubble);
mpB.start();
在第一个按钮中,您首先传递意图,然后创建MediaPlayer对象,这是错误的方式,请按照第二个按钮中的方式进行,(更改代码顺序),因为传递意图时会丢失当前上下文,请将第一个按钮的代码顺序设置为1)创建MediaPlayer对象2)激发意图检查我的答案!很乐意帮忙。单击前面的勾号选择我的答案。:)