2017-01-30 1 views
1

Wahrscheinlich mache ich etwas sehr dummes.String von Methode zu String in der Klasse

Aber ich habe eine Klasse Zaalactivity mit der String naam.

public class ZaalActivity extends MainActivity { 
public String naam; 

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

ListViewItemClick(); 

} 

Jetzt, wenn ich versuche, naam in meinem Kind Klasse zu erben, es hat immer noch einen Wert von null, wie ist es möglich, displayToastForID(long id) die Daten von naam in dem Verfahren zu erben?

public void ListViewItemClick() { 

    final ListView myList = (ListView) findViewById(R.id.ListviewCollection); 
    myList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View viewClicked, int position, long idInDB) { 
     displayToastForID(idInDB); 
     openWerkenInColActivity(); 
     //Toast.makeText(ZaalActivity.this, naam, Toast.LENGTH_LONG).show(); 
    } 
    }); 
} 

public void openWerkenInColActivity() { 
    Intent intent = new Intent(ZaalActivity.this, WerkenInColActivity.class); 
    startActivity(intent); 
} 


public void displayToastForID(long id) { 
    Cursor cursor = myDB.getRowCollection(id); 
    if (cursor.moveToFirst()){ 
     long IdDB = cursor.getLong(Integer.parseInt(DBAdapter.COL_COLLECTION_ID)); 
     naam = (cursor.getString(Integer.parseInt(DBAdapter.COL_COLLECTION_NAME))); 

     Toast.makeText(ZaalActivity.this, naam, Toast.LENGTH_LONG).show(); 
    } 

    cursor.close(); 
} 
+0

Sie müssen 'naam = "lala" zu tun;' 'nicht String naam = "lala";' –

+0

Es ist nicht wirklich etwas zu ändern scheinen. – roan

+0

Geben Sie den Code ein, an dem Sie 'ChangeNaam' anrufen. Ich sehe den Anruf nirgendwo in diesem. – akousmata

Antwort

0

Sie werden gebissen durch das sogenannte variable Shadowing. Sie verwenden auch =, wenn Sie wahrscheinlich == meinen.

Sie tun müssen:

public void ChangeNaam() { 
    if(blabla == blabal) { 
     naam = "lala"; 
    } 
} 

Ihr Code als eine lokale Variable naam in keinem Zusammenhang mit dem Gebiet naam, Abschattung, und so sind Sie nur die Änderung der lokalen Variablen, aber natürlich genannt erklärt, Diese lokale Variable wird ihren Gültigkeitsbereich verlassen und nach der Rückgabe der Funktion einen Speicherabzug erhalten. Sie sehen also keinen Unterschied, weil Sie die naam nicht geändert haben.

+0

Also habe ich es geändert. Aber nichts anderes passiert. Ich werde die ganze Methode hinzufügen. 'code public void displayToastForID (lange ID) { Cursor cursor = myDB.getRowCollection (id); if (cursor.moveToFirst()) { lang IdDB = cursor.getLong (Integer.parseInt (DBAdapter.COL_COLLECTION_ID)); naam = (cursor.getString (Ganzzahl.parseInt (DBAdapter.COL_COLLECTION_NAME))); Toast.makeText (ZaalActivity.this, naam, Toast.LENGTH_LONG) .show(); } cursor.close(); } ' – roan

+0

@roan Ich kann das nicht lesen. Fügen Sie es in einer Bearbeitung Ihrer Frage hinzu. – Kevin

+0

ja, sorry, ich sah – roan

0

ändern Sie es zu diesem.

public void ChangeNaam(){ 
    if(blabla==blabla){ 
    naam = "lala" 
    } 
+0

Willkommen zu Stack Overflow! Während Sie das Problem dieses Benutzers möglicherweise gelöst haben, sind Code-Only-Antworten für Benutzer, die in Zukunft auf diese Frage kommen, nicht sehr hilfreich. Bitte bearbeiten Sie Ihre Antwort, um zu erklären, warum Ihr Code das ursprüngliche Problem löst. –