2017-07-21 3 views
1
int countervalue = i.getIntExtra("Count", 10); 

J'ai cette ligne de code dans une activité différente lorsque quelqu'un clique sur un bouton, ils vont à cette activité. Sans cette ligne de code, l'application fonctionne parfaitement.int contrevalue = i.getIntExtra ("Count", 0); rend l'application plantage

Voici le code entier pour l'activité:

package com.example.navjeevenmann.mytycoon; 

    import android.content.Intent; 
    import android.os.Bundle; 
    import android.support.v7.app.AppCompatActivity; 
    import android.view.View; 
    import android.widget.AdapterView; 
    import android.widget.ArrayAdapter; 
    import android.widget.ListView; 

public class SecondActivity extends AppCompatActivity { 
private ListView listView; 
Intent i = getIntent(); 
int userchoice; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_second); 
    int countervalue = i.getIntExtra("Count", 0); 
    String[] values = {"Apple($20)-    Generates $40/sec", 
    "Second", "Third"}; 
    listView = (ListView) findViewById(R.id.List); 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_expandable_list_item_1, android.R.id.text1, values); 
    listView.setAdapter(adapter); 

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 


     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 


     } 

    }); 


} 
} 
+0

Ajoutez l'erreur stacktrace. – ZeekHuge

Répondre

1

initialize i = getIntent(); intérieur onCreate() méthode

juste avant int countervalue = i.getIntExtra("Count", 0);

0

vous pouvez utiliser bundle tels que

Première activité

Intent intent = new Intent(MainActivity.this,Main2Activity.class); 
intent.putExtra("int",20); 
startActivity(intent); 

maintenant dans la deuxième activité utilisent ce

Bundle i = getIntent().getExtras(); 
int value = i.getInt("int"); 
0

réponse de Vyacheslav est correcte, mais voici un peu plus d'infos.

Lorsque vous écrivez:

public class SecondActivity extends AppCompatActivity { 
    Intent i = getIntent(); 
} 

Votre Intent i sera intialized dès que votre SecondActivity instance est créée, et il sera réglé sur les résultats de la méthode getIntent().

Si vous regardez la source de cette méthode, vous voyez:

public Intent getIntent() { 
    return mIntent; 
} 

Au moment de votre SecondActivity instance est créée, mIntent est nulle. Donc, votre activité se comporte comme si vous aviez écrit ceci:

public class SecondActivity extends AppCompatActivity { 
    Intent i = null; 
} 

La solution, comme l'a dit Viatcheslav, est d'initialiser plus tard la variable i sur. N'importe où à l'intérieur onCreate() (après l'appel super) est un bon endroit pour le faire, mais attendre jusqu'à ce que votre appel i.getIntExtra("Count", 0) fonctionne aussi bien.