2016-06-06 13 views
0

Ich mag String-Wert aus editText bekommen, so verwende ich TextWatcherOnTextChanged Methode String-Wert auf meinem privaten String cName einzustellen. Und es setzt und bekommt den richtigen Wert.Setter setzt String-Wert aber Getter gibt null zurück, oder Standard-String-Wert

@TargetApi(11) 
@Override 
public View onCreateView(LayoutInflater inflater, 
         ViewGroup parent, Bundle savedInstanceState){ 

    View v = inflater.inflate(R.layout.fragment_add,parent,false); 

    dNameText = (EditText) v.findViewById(R.id.d_name); 
    dNameText.addTextChangedListener(new TextWatcher() { 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 

      dCloud.setName(s.toString()); 
      Log.e(TAG,"name " + dCloud.getName()); 
     } 

    }); 

hier ist mein Setter und Getter public class

private String cName = "ggg"; 

public String getName(){return cName;} 

public void setName(String name) {cName = name;} 

aber wenn ich Getter in anderen Verfahren verwendet werden soll oder einige, wo sonst immer ich privaten String cName Standardwert "bekommen ggg " oder wenn ich leer gehe, bekomme ich null. Warum private String cName nicht auf gesetzten Wert bleiben und wie kann ich es beheben?

+1

Verwenden Sie eine Datenbank zum Speichern Sie können überall zugreifen –

+0

Ihre Offline-App – kosas

+0

oder ich kann SQLite auch für Offline-Anwendungen verwenden? – kosas

Antwort

0

Der Wert von cName ändert sich nur, wenn der TextView Text von der Benutzeroberfläche geändert wird.

Ich schlage vor, dass, bevor Sie cName überall in Ihrem Code verwenden, können Sie es für seine Standardwerte testen (oder einfach null):

Wenn cName seinen Standardwert entspricht dann hat der Benutzer nicht das Textfeld geändert noch. Sonst hat sich das Textfeld geändert und Sie erhalten den neuen Wert durch Aufruf von getName().

+0

Ich denke, es ist immer eine gute Praxis, auf Null Wert zu überprüfen. Aber in diesem Fall habe ich es am Telefon getestet und wenn ich etwas in EditText Feld eingeben gibt es richtigen Wert und wenn ich die Schaltfläche Speichern, ruft getName() -Methode und App abstürzt weil Es gibt null zurück oder es wird mit dem Standardwert "ggg" gespeichert. – kosas