2016-05-13 15 views
2

Ich habe einen Fehler bei der Implementierung der ausgeblendeten Tastatur, wenn die Schaltfläche geklickt wird. Kann jemand das beheben? tatsächlich Codefehler in getSystemService und getWindowsTokenAusblenden der Tastatur beim Klicken auf die Schaltfläche (Fragment)

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_calculator, container, false); 

     Button hitung = (Button) rootView.findViewById(R.id.hitung); 
     final EditText height = (EditText)rootView.findViewById(R.id.height); 
     final EditText weight = (EditText)rootView.findViewById(R.id.weight); 

     InputMethodManager imm = InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
     imm.hideSoftInputFromWindow(EditText.getWindowToken(), 0); 

     final TextView result = (TextView)rootView.findViewById(R.id.result); 
     final TextView finalresult = (TextView)rootView.findViewById(R.id.finalresult); 
     finalresult.setMovementMethod(new ScrollingMovementMethod()); 

     hitung.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
      .......... 
} 
+0

kann keinen Stapeldruck, Fehlercode in der logcat bekommen? – Amesys

+0

Hallo, ich bin noch nicht läuft, Bc Fehler immer noch, auf getSystemService Warnung sagte: 'Kann Methode getSystemService (Java.Lang.String) nicht beheben' –

+0

Ist das fehlende '(' in dieser Zeile ein Fehler? InputMethodManager imm = InputMethodManager) getSystemService (Context.INPUT_METHOD_SERVICE); –

Antwort

5

Sie wie getActivity().getSystemService(Context.INPUT_METHOD_SERVICE)

Grund für das gleiche schreiben Fragment so verwenden:

Eine Aktivität erweitert den Kontext, ein Fragment nicht. Daher müssen Sie zunächst einen Verweis auf die Aktivität erhalten, in dem das Fragment

enthalten ist

bearbeiten

für die anderen Fehler, den Sie im Kommentar erwähnt können Sie verwenden

getView().getWindowToken()

und die Verbergen-Methode sollte innerhalb Ihrer button'sonClick() Methode wie

aufgerufen werden

imm.hideSoftInputFromWindow(getView().getWindowToken(), 0);

+0

und für 'getWindowsToken()'? Warnung sagte: kann nicht Referenz aus einem statischen Kontext sein –

+0

können Sie 'getView() verwenden. getWindowToken()' –

+0

Danke seine Arbeit für mich :) –

1

Verwendung unter Code

try { 
        InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
        inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 
          InputMethodManager.HIDE_NOT_ALWAYS); 
       } catch (Exception e) { 
        if(net.one97.paytm.common.utility.CJRAppCommonUtility.isDebug) e.printStackTrace(); 
       } 
1
// hide keyboard 
public static void hideSoftKeyboard(Context context, View view) { 
    InputMethodManager inputMethodManager = (InputMethodManager) context.getSystemService(Activity.INPUT_METHOD_SERVICE); 

    if(inputMethodManager != null && inputMethodManager.isActive()) 
    { 
     //inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0); 
     //InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
     inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0); 
    } 
} 
5

Verwendung dieses,

public static void hideKeyboard(Context mContext) { 
    InputMethodManager imm = (InputMethodManager) mContext 
      .getSystemService(Context.INPUT_METHOD_SERVICE); 
    imm.hideSoftInputFromWindow(((Activity) mContext).getWindow() 
      .getCurrentFocus().getWindowToken(), 0); 
} 
+0

hmmm ist wie meine Tastatur verstecken für immer aus im Start meine apps –

+0

rufen Sie diese Methode auf Ihrem Klicken Sie auf die Schaltfläche. es funktioniert und getestet. @ F_X – Tejas

+0

@F_X: Bitte akzeptieren Sie meine Antwort, wenn es für Sie hilfreich ist. – Tejas

1
hitung.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) 
      { 
      InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
      imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0); 
      } 
}); 
Verwandte Themen