2017-09-27 2 views
0

Mon problème est d'envoyer des données avec intention entre deux classes.C'est un cas simple, mais l'application reçoit une erreur ou je ne peux pas accéder à la 2ème classe (Anasayfa .class) quand j'envoie les données.Je veux montrer la valeur de k (la valeur que je reçois de la 1ère classe) dans le TextView de 2ème classe.Le transfert de données avec l'intention n'est pas possible, car le lot est vide

MainActivity.Class

Intent intentanasyf = new Intent(getApplicationContext(), Anasayfa.class); 
        intentanasyf.putExtra("key",k); 
        //k is an integer variable type. 
        Toast.makeText(getApplicationContext(),String.valueOf(k),Toast.LENGTH_SHORT).show(); 
        startActivity(intentanasyf); 

Anasayfa.class

TextView txt_publicstuId; 

Bundle bundleId; 
Integer gelmisId; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_anasayfa); 

    mMyHelper = new MyHelper(Anasayfa.this, "STUDB", null, 1); 
    mSQLiteDb=mMyHelper.getWritableDatabase(); 

    txt_publicstuId= (TextView) findViewById(R.id.txtpublicstuId); 

    if(bundleId!=null){ 
     bundleId=getIntent().getExtras(); 
     gelmisId=bundleId.getInt("key"); 
     txt_publicstuId.setText(String.valueOf(gelmisId)); 
    } 
    else{ 
     Toast.makeText(getApplicationContext(),"null",Toast.LENGTH_SHORT).show(); 
    } 

Merci pour vos réponses.

+0

double possible de (https://stackoverflow.com/questions/10107915/bundle-is-null-after [Bundle est nul après la mise en intention] -setting-it-in-intention) –

+0

@Vishal Je les ai vérifiés, mais je n'ai obtenu aucun résultat. – ernbykz

Répondre

0

Où avez-vous affecté une valeur à bundleId avant de rechercher null dans Anasayfa? Ce ne serait pas toujours null? Attribuer une valeur à elle avant de vérifier null comme:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    // ... 
    bundleId=getIntent().getExtras(); 
    if (bundleId != null && bundleId.containsKey("key")) { 
     gelmisId=bundleId.getInt("key"); 
     txt_publicstuId.setText(String.valueOf(gelmisId)); 
    } else { 
     // Show toast here 
    } 
} 
+0

C'est exactement ce que je pensais - il n'a pas assigné bundleId. Si, pour une raison quelconque, il n'avait pas défini la clé supplémentaire, la paire de valeurs "clé" l'OP obtiendrait une erreur lorsqu'il essayait de le lire avec 'getInt (" key ")'. Je suggère qu'il vérifie d'abord sa disponibilité en appelant 'getIntent(). HasExtra (" key ")'. Ensuite, juste pour être plus sûr, il peut toujours vouloir utiliser la surcharge 'getIntent(). GetInt (" key ", -1)'. Ensuite, s'il obtient -1 retourné, il peut réagir de manière appropriée. – Barns

+0

@ Barns52 Droite. Votre suggestion fonctionne. Ou on peut utiliser une vérification supplémentaire 'containsKey()'. –

+0

@ShobhitPuri Vous avez raison.Je n'ai pas vu quel était le problème depuis longtemps.Merci de m'aider. – ernbykz