2012-12-24 10 views
9

Chcę przekazać wartość pozycji w jednej klasie działalności do innego ...Jak przekazać wartość używając Intent między aktywnością w android

Mój kod wygląda następująco:

protected void onListItemClick(ListView listView, View v, int position, 
      long id) { 
     switch (position) { 
      case 1: 
       Intent newActivity1 = new Intent(this, BucketItemActivity.class); 
       newActivity1.putExtra("bucketno", position); 
       startActivity(newActivity1); 
       break; 
      case 2: 
       Intent newActivity2 = new Intent(this, BucketItemActivity.class); 
       newActivity2.putExtra("bucketno", position); 
       startActivity(newActivity2); 
       break; 
    } 
} 

Aktywność Klasa, która otrzyma ją ..

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_bucket_item); 
     String value = getIntent().getExtras().getString("bucketno"); 
     TextView textView = new TextView(this); 
     textView.setTextSize(40); 
     textView.setText(value); 
     setContentView(textView); 
    } 

ale zawsze null wartości String ...

Proszę pomóż.

+0

chronione void onCreate (pakiet savedInstanceState) { super.onCreate (savedInstanceState); setContentView (R.layout.activity_bucket_item); Pakiet pakietów = getIntent(). GetExtras(); Wartość ciągu = bundle.getString ("bucketno"); TextView textView = (TextView) findViewById (R.layout.textView1); textView.setTextSize (40); textView.setText (wartość); } – User

Odpowiedz

17

zastąpić ten,

String value = getIntent().getExtras().getString("bucketno"); 

z

int value = getIntent().getExtras().getInt("bucketno"); 

Próbujesz przekazać int wartość, ale odzyskiwanie danych String. Właśnie dlatego otrzymujesz wyjątek nullpointerException.

+1

Powinna to być wartość "int" lub "Wartość ciągu = String.valueOf (...);". Próbujesz zapisać 'int' w' String' z tym fragmentem kodu. ;) – Eric

+0

oops .. Dzięki za wskazanie .. Edytowane. :) –

+0

@Andro Selva u prawej, ale musi uzyskać wyjątek parseException lub classcaste, ale otrzymuje wyjątek nullpointer? –

7

Można użyć:

Intent i = new Intent(MainActivity.this,SecondActivity.class); 
i.putExtra("YourValueKey", yourData.getText().toString()); 

następnie można je dostać od drugiego aktywności przez:

Intent intent = getIntent(); 
String YourtransferredData = intent.getExtras().getString("YourValueKey"); 
4
String value = Integer.toString(getIntent().getExtras().getInt("bucketno")); 
0

użytku:

String value = getIntent().getExtras().get("key").toString(); 

getIntent().getExtras() dadzą ci Z zestaw . Do pobrania wartości można użyć metody get().

1
Bundle extras = getIntent().getExtras(); 
     if (extras != null) { 

String data = intent.getExtras().getString("key"); 
}` 
0

W dodatku, który ma inną ocena sytuacji

double userDMH = Util.getInstance(TakeInfoOne.this).calculateBMH(userGender, kg, talll, currentAge, activityy); 
         Intent intentTogeneral = new Intent(TakeInfoOne.this, TakeInfoTwo.class); 
         intentTogeneral.putExtra("user_current_age",userDMH); 
         startActivity(intentTogeneral); 

jeśli umieścić inne prymitywy jak podwójne, Boolean, int tylko nie zapomnij wpisać poprawny format podczas geting wartość w secont Aktywny

Bundle extras = getIntent().getExtras(); 
    if (extras != null) { 
     double value = extras.getDouble("user_current_age"); 
     txt_metabolism.setText(""+value); 
    } 

Tutaj wpisz extras.getDouble() wpisz swój typ wartości, taki jak:

extras.getInt("user_current_age"); 
extras.getBoolean("user_current_age"); 
extras.getString("user_current_age"); 
Powiązane problemy