2017-07-04 2 views
0

ich eine Bean-Klasse haben, die erfolgreich einen String-Wert aus einer anderen Klasse abruft. = (Er druckt es ganz gut in der Bean-Klasse)Aufruf String in Bean-Klasse Gibt Null

Wenn ich versuche, und rufen Sie diese Klasse/string es wird als null zurückgegeben.

Hier ist der relevante Code:

public class cityModel implements Serializable { 
    private String fajr; 

    public void setFajr(String fajr) { 
     this.fajr= fajr; 

    } 
    public String getFajr() { 

     return fajr; 
    } 
} 
public void mutePrayerTime(View view) { 
    cityModel cityObj= new cityModel(); 
    String fajr=cityObj.getFajr(); 
    Log.d("LOGCAT", "" + cityObj.getFajr()); 

    //StringBuilder newFajr = new StringBuilder(fajr); 
    //newFajr.delete(2,5); 
    //Log.d("newFajr", String.valueOf(newFajr)); 
    // Intent alarm = new Intent(AlarmClock.ACTION_SET_ALARM); 

    //alarm.putExtra(AlarmClock.EXTRA_HOUR, fajr); 

} 

den Log.d Tag Logcat

als null zurück

edit: Code, der die Bean-Klasse aus dem String ruft:

protected void outputTimings(JSONArray jsonArray) { 
     String[] prayers = {"fajr", "shurooq", "dhuhr", "asr", "maghrib", "isha"}; 
     cityModel cityObj; 
     try { 
      cityObj= new cityModel(); 
      for (int i = 0; i < jsonArray.length(); i++) { 
       JSONObject cityObject = 
         jsonArray.getJSONObject(i); 
       result = result + "fajr" + " : " 
         + cityObject.getString("fajr") + "\n" + result + "shurooq" + " : " 
         + cityObject.getString("shurooq") + "\n" + result + "dhuhr" + " : " 
         + cityObject.getString("dhuhr") + "\n" + result + "asr" + " : " 
         + cityObject.getString("asr") + "\n" + result + "maghrib" + " : " 
         + cityObject.getString("maghrib") + "\n" + result + "isha" + " : " 
         + cityObject.getString("isha") + "\n"; 

       cityObj.setFajr(""+cityObject.getString("fajr")); 


      } 
+0

nicht wie der obigen Code sehen würde sogar kompilieren. 'fajr' ist ein String und du versuchst ihn aufzurufen, als wäre es eine Methode wie' fajr() '. Haben Sie auch eine Methode mit dem gleichen Namen? Sende seinen Code. – Strelok

+0

Es kompiliert und läuft. Ill fügt den Code zum Hauptbeitrag hinzu – Fencer300

+0

Geben Sie den vollständigen Code der Klasse ein, in der die Methode 'mutePrayerTime' definiert ist. – Strelok

Antwort

1

Sehen Sie sich diese Methode an:

public void mutePrayerTime(View view) { 
    cityModel cityObj= new cityModel(); 
    String fajr=cityObj.getFajr(); 
    Log.d("LOGCAT", "" + cityObj.getFajr()); 

    //StringBuilder newFajr = new StringBuilder(fajr); 
    //newFajr.delete(2,5); 
    //Log.d("newFajr", String.valueOf(newFajr)); 
    // Intent alarm = new Intent(AlarmClock.ACTION_SET_ALARM); 

    //alarm.putExtra(AlarmClock.EXTRA_HOUR, fajr); 

} 

Sie erstellen gerade cityObj wie dieses cityModel cityObj= new cityModel(); an diesem Punkt sind alle seine Eigenschaften null das ist, warum Sie Null in Ihrem Protokoll sehen. Sie sollten die cityObj von Ihrer outputTimings Methode zur mutePrayerTime Methode übergeben:

public void mutePrayerTime(View view,cityModel cityObj) { 
    Log.d("LOGCAT", "" + cityObj.getFajr()); 

    //StringBuilder newFajr = new StringBuilder(fajr); 
    //newFajr.delete(2,5); 
    //Log.d("newFajr", String.valueOf(newFajr)); 
    // Intent alarm = new Intent(AlarmClock.ACTION_SET_ALARM); 

    //alarm.putExtra(AlarmClock.EXTRA_HOUR, fajr); 

} 

und dann in outputTimings:

cityObj.setFajr(""+cityObject.getString("fajr")); 
someObj.mutePrayerTime(view, cityObj); 
+0

Ahhh !! Macht viel mehr Sinn. Vielen Dank! – Fencer300

+0

nur so kann ich besser verstehen, was ist der Zweck des zweiten obj in outputTimings und wo/wie sollte es definiert werden? – Fencer300

+0

Es ist wo immer Ihre 'mutePrayerTimings' Methode ist. @ Fencer300 – Strelok

Verwandte Themen