我想在两个活动之间发送数据,并根据数据显示一个视图(我有一个frameLayout,基于该数据我提交了一个填充frameLayout的片段)。我写这段代码,但我认为它不是在两个活动之间传输数据!因为总是0号!正在执行
问题是什么?
飞溅:
private OnClickListener onClickListener=new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("circuleProduct", "clicked");
Intent intent;
switch(v.getId()){
case R.id.btnCircleProduct:
intent=new Intent(Splash.this,MainActivity.class);
startActivity(intent);
intent.putExtra("value",1 );
break;
case R.id.btnCircleIntroduce:
intent=new Intent(Splash.this,MainActivity.class);
startActivity(intent);
intent.putExtra("value", 2);
break;
case R.id.btnCircleContact:
intent=new Intent(Splash.this,MainActivity.class);
startActivity(intent);
intent.putExtra("value", 3);
break;
case R.id.btnCircleMore:
intent=new Intent(Splash.this,MainActivity.class);
startActivity(intent);
intent.putExtra("value", 4);
break;
}
}
};
的活动:
public class MainActivity extends FragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
FragmentManager fm=getSupportFragmentManager();
FragmentTransaction ft=fm.beginTransaction();
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int value=0;
Intent intent=getIntent();
value=intent.getIntExtra("value", 0);
switch(value){
case 0:
ft.add(R.id.frameLayout, new Introduce());
ft.commit();
break;
case 1:
ft.add(R.id.frameLayout, new Product());
ft.commit();
case 3:
ft.add(R.id.frameLayout, new Contact());
ft.commit();
case 4:
ft.add(R.id.frameLayout, new More());
ft.commit();
break;
}
}
}
答案 0 :(得分:1)
尝试以这种方式使用两个活动之间的数据传输
Intent i = new Intent(this, ActivityTwo.class);
i.putExtra("Value1", 1);
startActivity(i);
和oncreate()之后的其他活动
Bundle extras = getIntent().getExtras();
int value1 = extras.getint("Value1",0);
上的详细教程
答案 1 :(得分:1)
在startActivity之前添加额外内容
intent=new Intent(Splash.this,MainActivity.class);
intent.putExtra("value", 3);
startActivity(intent);
同样在case语句中给出break,在switch case语句中你缺少2
switch(value){
case 1:
ft.add(R.id.frameLayout, new Introduce());
ft.commit();
break;
case 2:
ft.add(R.id.frameLayout, new Product());
ft.commit();
break;
case 3:
ft.add(R.id.frameLayout, new Contact());
ft.commit();
break;
case 4:
ft.add(R.id.frameLayout, new More());
ft.commit();
break;
}
答案 2 :(得分:0)
在开始活动之前执行intent.putExtra("value", ...);
。
答案 3 :(得分:0)
这样做
intent.putExtra("value",1 );
startActivity(intent);
而不是
startActivity(intent);
intent.putExtra("value",1 );
答案 4 :(得分:0)
在主要活动中你忘记了开关的中断。这意味着将多次调用commit。添加break到case1和case3。 并且在调用startactivity之前添加额外内容