2016-04-06 6 views
1

Ich habe eine coFragment.xml-Datei, die ein EditText-Feld und einige Schaltflächen enthält. In meiner coFragment.java-Datei möchte ich beiClickListeners zu den Schaltflächen registrieren, so dass Text, wenn sie gedrückt werden, dem EditText-Feld hinzugefügt wird.Einstellung onClickListeners, um Textfeld in Fragment zu bearbeiten

Meine coFragment.java Datei hat derzeit

public class CoFragment extends Fragment implements View.OnClickListener { 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup parentViewGroup, 
         Bundle savedInstanceState) { 
    final View v = inflater.inflate(R.layout.coFragment, parentViewGroup, false); 

    EditText input = (EditText) getView().findViewById(R.id.input_id); 

    Button oneButton = (Button) v.findViewById(R.id.one_button_id); 
    Button twoButton = (Button) v.findViewById(R.id.two_button_id); 
    Button threeButton = (Button) v.findViewById(R.id.three_button_id); 

    oneButton.setOnClickListener(this); 
    twoButton.setOnClickListener(this); 
    threeButton.setOnClickListener(this) 
} 

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.one_button_id: 
      input.append("1"); 
      break; 
     case R.id.two_button_id: 
      input.append("2"); 
      break; 
     case R.id.three_button_id: 
      input.append("3"); 
      break; 
} 

Offensichtlich kann ich zur Zeit nicht auf das input EditText Objekt im onClick Verfahren. Wie kann ich die gewünschte Funktionalität erhalten?

Antwort

1

Wenn Sie EditText zugreifen möchten außerhalb onCreateView() Sie es außerhalb einer Methode deklarieren müssen und initialisieren es in onCreateView() -

private EditText input; 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup parentViewGroup, 
         Bundle savedInstanceState) { 

.... 

input = (EditText) v.findViewById(R.id.input_id); 
.... 
} 

Jetzt können Sie input überall inn verwenden Ihre Fragment.

+0

Vielen Dank für Ihre Antwort - wenn ich versuche, was Sie vorgeschlagen habe, bekomme ich 'java.lang.NullPointerException: Versuchen Sie, virtuelle Methode 'android.view.View android.view.View.findViewById (int)' auf a Nullobjektreferenz? – nilcit

+0

Hast du genau das kopiert, was ich geschrieben habe? Seine v.findViewById() und nicht getView(). FindViewById –

+0

aah, ok, ich habe getView, nicht v. Alles funktioniert jetzt, vielen Dank für Ihre Hilfe, sehr geschätzt! – nilcit