6

दिखाता है मुझे स्क्रीन पर कीबोर्ड के साथ समस्या हो रही है। मेरे पास EditText के साथ एक गतिविधि है जो कुंजीपटल दिखाती है, और दूसरी गतिविधि पर जाने के लिए एक बटन दिखाती है। दूसरी गतिविधि को onCreate() पर दिखाती है, सामान करता है, और ProgressDialog को खारिज कर देता है। समस्या यह है कि ProgressDialog प्रदर्शित होता है, तो कीबोर्ड भी है।नई गतिविधि को कॉल करने के बाद कीबोर्ड छुपाएं जो एक प्रोग्रेसडिअलॉग

मैं ProgressDialog बनाने से पहले कीबोर्ड गायब होना चाहता हूं। मैंने StackOverflow और अन्य साइटों दोनों thorougly की खोज की, लेकिन इस विशेष परिदृश्य के साथ कुछ भी काम नहीं करता है।

मैं आपके संदर्भ के लिए दो तस्वीरें संलग्न कर रहा हूँ:

http://i45.tinypic.com/2rzq7b6.pnghttp://i45.tinypic.com/34ret1z.png

यह पहली गतिविधि का कोड है:

public class FirstActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     findViewById(R.id.button1).setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 
       Intent intent = new Intent(FirstActivity.this, SecondActivity.class); 
       startActivity(intent); 
      } 
     }); 
    } 
} 

और यह दूसरी गतिविधि का कोड है:

public class SecondActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.second); 

     // TODO: hide keyboard here 

     final ProgressDialog dialog = ProgressDialog.show(this, "", "Please wait...", true, false, null); 

     // in real code, here there is an AsyncTask doing stuff... 
     new Handler().postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       dialog.dismiss(); 
      } 
     }, 5000); 
    } 
} 

धन्यवाद

+0

इस पर एक नजर डालें तो हैं: http://stackoverflow.com/a/3858873/1321873 – Rajesh

+0

@Rajesh, पहले से ही करने की कोशिश की , यहां लागू नहीं है। दूसरी गतिविधि को कीबोर्ड को छिपाना चाहिए, भले ही कीबोर्ड किसी अन्य गतिविधि द्वारा दिखाया गया हो। – Venator85

उत्तर

20

तकनीक phalt द्वारा पोस्ट की गई एक परिवर्तन का उपयोग हल:

InputMethodManager im = (InputMethodManager) this.getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE); 
im.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); 

इस कोड onCreate/onStart/onResume दौरान सही ढंग से काम करता है, के बाद से से विंडो टोकन प्राप्त करने के लिए एक केंद्रित दृश्य पर निर्भर नहीं करता।

+2

यह मेरे लिए काम नहीं कर रहा है। इसे ऑनक्रेट पर रखो। –

10

'secondActivity' गतिविधि के लिए manifest.xml फ़ाइल में यह कोड लिखें।

<activity name="EditContactActivity" 
    android:windowSoftInputMode="stateAlwaysHidden"> 
    ... 
</activity> 
+0

यह मेरे लिए एक व्यवहार्य विकल्प नहीं है, क्योंकि दूसरी गतिविधि के लेआउट में एडिटटेक्स्ट (AsyncTask के परिणाम द्वारा निर्धारित) शामिल हो सकता है। – Venator85

+1

मुझे यह उपयोगी साबित हुआ, इसलिए जब आवश्यक हो तो कुंजीपटल पॉप अप हो जाएगा, लेकिन स्क्रीन लोड करने पर स्वचालित रूप से नहीं होगा: एंड्रॉइड: windowSoftInputMode = "stateHidden" –

+0

को राज्य की आवश्यकता है हमेशा से प्रतिबंधित | समायोजन कुछ भी नहीं न केवल राज्य हमेशा के लिए अधिकृत – Odaym

1

आप इस तरह भी उपयोग कर सकते हैं:

InputMethodManager IMM;

onCreate में रेखा से नीचे लिखें() विधि:

IMM = (InputMethodManager) getSystemService (Context.INPUT_METHOD_SERVICE); ;

imm.hideSoftInputFromWindow (arg0.getWindowToken(), 0):

और इस लाइन बटन के onclick में है

उदाहरण:

public class FirstActivity extends Activity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    findViewById(R.id.button1).setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 

      imm.hideSoftInputFromWindow(arg0.getWindowToken(), 0); 
      Intent intent = new Intent(FirstActivity.this, SecondActivity.class); 
      startActivity(intent); 
     } 
    }); 
} 
} 
+0

यह सामान्य रूप से काम करता है, लेकिन दूसरी गतिविधि लाइब्रेरी प्रोजेक्ट में है, जबकि पहली गतिविधि इस लाइब्रेरी प्रोजेक्ट का उपयोग करके किसी अन्य प्रोजेक्ट में है। इस प्रकार, क्योंकि मेरी पहली गतिविधि पर कोई नियंत्रण नहीं है, दूसरी गतिविधि को सीधे कीबोर्ड छिपाने के लिए जरूरी है। – Venator85

-1

आप की कोशिश की है:

InputMethodManager im = (InputMethodManager) 
this.getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE); 

im.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), 
InputManagerMethod.HIDE_NOT_ALWAYS); 

इस कोड मैं अंक मैं कुंजीपटल छुपाना चाहते हैं पर में फेंक है।

+0

ऑनक्रेट (स्पष्ट रूप से setContentView के बाद), ऑनस्टार्ट, और ऑन्यूज़ में एक NullPointerException के साथ एप्लिकेशन को क्रैश करता है, फिर भी कोई केंद्रित दृश्य नहीं है। – Venator85

+0

ठीक है, क्या आपने कीबोर्ड मैनिफेस्ट में छिपे हुए कीबोर्ड को सेट करने का प्रयास किया है और फिर कोड के माध्यम से बाद में दिखाया जाना चाहिए? संपादित करें: उदाहरण के लिए: कृष्णा सुथर के उत्तर को नीचे ले जाएं और फिर मेरे कोड को उलट दें ताकि कीबोर्ड _can_ का उपयोग किया जा सके। – phalt

+0

यह शून्य सूचक अपवाद फेंक देगा क्योंकि यह वर्तमान फोकस पाने का प्रयास करेगा और इसे एक नहीं मिलेगा। अपने कोड पर बंदर स्क्रिप्ट चलाने का प्रयास करें। एक बिंदु पर, यह आपको शून्य सूचक दे ​​सकता है। –

0

में टुकड़ा कक्षा

@Override 
    public void onResume() 
    { 
     getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
     super.onResume(); 
     } 

में गतिविधि कक्षा

@Override 
    public void onResume() 
    { 
     this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
     super.onResume(); 
     FetchLocation fl = new FetchLocation(mContext, locationResult); 
    } 
+1

यह मेरे लिए सबसे अच्छा काम करता है .... – swetha

संबंधित मुद्दे