0

我想在两个活动之间发送数据,并根据数据显示一个视图(我有一个 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;
    }
 }
}
4

5 回答 5

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);

请参阅有关Android Intents的详细教程

于 2013-09-29T11:03:02.950 回答
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;
}
于 2013-09-29T11:19:38.027 回答
0

intent.putExtra("value", ...);在开始活动之前做。

于 2013-09-29T10:53:02.737 回答
0

做这个

intent.putExtra("value",1 );    
startActivity(intent);

代替

startActivity(intent);    
intent.putExtra("value",1 );  
于 2013-09-29T11:04:45.220 回答
0

在主要活动中,您忘记了中断开关。这意味着 commit 将被调用多次。在 case1 和 case3 中添加中断。并在调用 startactivity 之前添加额外内容

于 2013-09-29T11:19:35.680 回答