2016-04-04 10 views
0

Ich habe so etwas wie:Android Studio-Fragment kann Onclick nicht zugreifen EditText

public class EditCustomer extends Fragment implements OnClickListener { 
    public void onClick(View v) { 
     //this is what runs when you click the button 
     EditText editName=(EditText) v.findViewById(R.id.edit_name); 
     System.out.println(editName.getText()); //FAILS 

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment4 
    View v=inflater.inflate(R.layout.fragment_edit_customer, container, false); 
    Button a = (Button) v.findViewById(R.id.update_cust_btn); 
    a.setOnClickListener(this); //adds button listener 
    EditText editText = (EditText)v.findViewById(R.id.edit_name); 
    System.out.print(editText.getText().toString()); 


    return v; 
} 
... 

Aus irgendeinem Grund Null-Zeiger Ausnahme in EditText. Wenn ich dieselbe Zeile in meinem onCreateView() im selben Fragment versuche, funktioniert es ganz gut. Gibt es etwas, das ich hier nicht bekomme?

+0

können Sie Ihren onCreateCiew() anzeigen? –

+0

@ArpitPatel gerade jetzt – mugetsu

+0

ya ich bin tring und senden Sie Demo –

Antwort

0

Schritt 1 importieren Sie diese zwei Pakete.

import android.view.View; 
import android.view.View.OnClickListener; 

Schritt 2 implementieren OnClickListener in Ihrer Klasse

public class SettingsFragment extends Fragment implements OnClickListener

Schritt 3 definieren Knopf und EditText in onCreateView();

Hinweis: - Declare Knopf und EditText Globally

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     View rootView = inflater.inflate(R.layout.fragment_settings, container, 
       false); 

     Admin_Email = (EditText) rootView.findViewById(R.id.et_admin_email); 

     btn_SET = (Button) rootView.findViewById(R.id.btn_SET); 
     btn_ChangePassword = (Button) rootView 
       .findViewById(R.id.btn_ChangePassword); 

     btn_SET.setOnClickListener(this); 
     btn_ChangePassword.setOnClickListener(this); 


     return rootView; 

    } 

Schritt 4 Außerhalb des OnCreateView() definieren die OnClick() Methode Id mit

@Override 
    public void onClick(View v) { 

     switch (v.getId()) { 
      case R.id.btn_SET: 

      Toast toast = Toast.makeText(getActivity(), ""+Admin_Email.getText().toString(), 
          Toast.LENGTH_SHORT); 

       break; 
      case R.id.btn_ChangePassword: 

       break; 

      default: 
       break; 
     } 
    } 

Mein Voll-Code

mport android.annotation.SuppressLint; 
import android.app.Fragment; 
import android.content.Context; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.preference.PreferenceManager; 
import android.util.Patterns; 
import android.view.Gravity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
import android.view.WindowManager; 
import android.widget.Button; 
import android.widget.CompoundButton; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 
import android.widget.ToggleButton; 

import java.util.regex.Pattern; 



public class SettingsFragment extends Fragment implements OnClickListener { 



    Button btn_SET, btn_ChangePassword; 
    static EditText Admin_Email; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     View rootView = inflater.inflate(R.layout.fragment_settings, container, 
       false); 

     Admin_Email = (EditText) rootView.findViewById(R.id.et_admin_email); 

     btn_SET = (Button) rootView.findViewById(R.id.btn_SET); 
     btn_ChangePassword = (Button) rootView 
       .findViewById(R.id.btn_ChangePassword); 

     btn_SET.setOnClickListener(this); 
     btn_ChangePassword.setOnClickListener(this); 


     return rootView; 

    } 


    @Override 
    public void onClick(View v) { 

     switch (v.getId()) { 
      case R.id.btn_SET: 

      Toast toast = Toast.makeText(getActivity(), ""+Admin_Email.getText().toString(), 
          Toast.LENGTH_SHORT); 



       break; 
      case R.id.btn_ChangePassword: 

//   

       break; 

      default: 
       break; 
     } 
    } 



} 
+0

hinzufügen Bitte erwähnen Sie Änderungen, die Sie gemacht haben. –

+0

Ich deklariere Edittext außerhalb der onCreate() –

+0

Das sollten Sie einige wo in Ihrer Antwort erwähnen. –