2016-05-10 5 views
0

Je dois passer une chaîne créée de 'Activité A' à 'Activité B' afin que je puisse l'afficher dans un TextView. Le problème est que le code provoque Android ne répond pas, son identique aux autres tutoriels en ligne.Android .putExtra (ne répond pas)

Merci pour vos commentaires.

Activité A.onCreate()

check_button = (Button) findViewById(R.id.check_button); 
    check_button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) 
     { 
      Intent i = new Intent(AddActivity.this, DetailActivity.class); 
      String hash = text_hash.toString(); 
      i.putExtra("hash" , hash); 
      startActivity(i); 
     } 
    }); 

Activité B.onCreate()

Bundle extras = getIntent().getExtras(); 
if (extras != null) 
{ 
    passedHash = (String) getIntent().getExtras().getString("hash"); 
    hash.setText(passedHash); 
} 

pile trace:

 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference 
+0

text_hash a textView? –

+0

Oui, voir la modification à la question :) – EightSquared

+0

Comme @SajedulKarim a dit que vous devriez utiliser Chaîne hash = text_hash.getText(). ToString(); –

Répondre

1

Selon votre journal, il semble que vous ne l'avez pas initialiser votre TextView dans B. Activité Pour ce faire, avant de définir le texte à votre TextView:

TextView hash = (TextView)findViewById(R.id.hash_textview); 
+0

Littéralement juste compris cela. +1 :) – EightSquared

0

Si text_hash est TextView ou EditText utilisent alors l'utilisation

String hash = text_hash.getText().toString(); 

En ActivityB onCreate() utilisez:

String newString; 
if (savedInstanceState != null) { 
    Bundle extras = getIntent().getExtras(); 
    if(extras == null) { 
     newString= null; 
    } else { 
     newString= extras.getString("hash"); 
    } 
} 

EDIT de votre journal d'erreur, vous ne l'avez pas dans votre initialisez TextView ActivityB. Vous devez d'abord initialiser TextView, puis définir le texte.

0

Ok, donc je devais utiliser X.getText() .toString(); En lisant la trace de la pile, j'ai pensé que j'avais aussi besoin de trouver ViewByID sur le TextView AVANT d'essayer de définir le texte.

Merci d'avoir lu.

0

votre objet textView est nullreferenced, vous devez initialiser la variable de hachage dans le oncreate avant de commencer à appeler toute méthode de cette TextView ...

Exemple:

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    TextView hash = (TextView)findViewById(R.id.hash_textview); 

après que vous pouvez appeler la méthode settext

hash.setText(passedHash);