2013-09-29 62 views
0

我想在兩個活動之間發送數據,並基於數據顯示一個視圖(我有一個frameLayout並基於該數據爲fill 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; 
    } 
} 
} 

回答

1

前添加額外真的把多餘的startActivity

intent=new Intent(Splash.this,MainActivity.class); 
intent.putExtra("value", 3); 
startActivity(intent); 

也給在case語句打破,在開關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; 
} 
0

執行intent.putExtra("value", ...);啓動活動之前。

1

嘗試以這種方式

Intent i = new Intent(this, ActivityTwo.class); 
    i.putExtra("Value1", 1); 
    startActivity(i); 

和其他活動使用數據transfering兩項活動之間後的OnCreate()

Bundle extras = getIntent().getExtras(); 
int value1 = extras.getint("Value1",0); 

看到Android Intents

0

這個詳細的教程做這個

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

代替

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

是的,我改變這但是當我點擊聯繫人和產品按鈕程序有錯誤。我編輯我的問題。請閱讀並幫助我。 – SensorS

0

在主要活動中,你已經忘記了在開關的突破。這意味着提交將被多次調用。添加break到case1和case3。 而且還要求startactivity