2016-05-10 14 views
0

Ich muss einen String übergeben von 'Aktivität A' zu 'Aktivität B', so dass ich es in einem TextView anzeigen kann. Das Problem ist, dass der Code dazu führt, dass Android nicht antwortet, es ist identisch mit den anderen Online-Tutorials.Android .putExtra (reagiert nicht)

Danke für jede Rückmeldung.

Aktivität 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); 
     } 
    }); 

Aktivität B.onCreate()

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

Stack-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

ist text_hash ein textView? –

+0

Ja, siehe Bearbeiten der Frage :) – EightSquared

+0

Wie @SajedulKarim sagte, sollten Sie String verwenden hash = text_hash.getText(). ToString(); –

Antwort

1

Nach Ihrem Log, so scheint es, dass Sie nicht Ihre Textview in Aktion B. das hat initialisieren Sie, bevor Sie den Text zu Ihrem Textview-Einstellung:

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

Wörtlich nur herausgefunden. +1 :) – EightSquared

0

Wenn text_hash ist TextView oder EditText dann Gebrauch

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

In ActivityB onCreate() verwenden, verwenden:

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

EDIT Von Ihrem Fehlerprotokoll, Sie haben keine Textview in Ihrem ACTIVITYB initialisieren. Zuerst müssen Sie diese TextView initialisieren und dann Text setzen.

0

Ok, also ich brauchte X.getText zu verwenden() .toString(); Durch das Lesen der Stack-Trace dachte ich mir, ich musste auch ViewByID auf der TextView BEFORE versuchen Text zu setzen.

Danke fürs Lesen.

0

Ihr Textview Objekt nullreferenced ist, müssen Sie den Hash-Variable in der oncreate initialisieren, bevor Sie eine Methode des Textview ...

Beispiel zu nennen beginnen:

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

Danach können Sie Aufruf der settext-Methode

hash.setText(passedHash);