2013-09-29 4 views
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; 
    } 
} 
} 

ответ

1

НЕ ставить дополнительный перед тем startActivity

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

дают также перерыв в случае заявления, в случае, если заявление переключателя вам не хватает 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); 

и в другой деятельности после 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

в основной деятельности вы забыли перерыв в коммутаторе. Это означает, что фиксация будет вызываться несколько раз. Добавьте разрыв к case1 и case3. А также добавить дополнительные услуги перед вызовом startactivity

Смежные вопросы