के लिए कीबोर्ड 'हो गया' पकड़ें मेरे पास AlertDialog
है, जिसमें कुछ पाठ, NumberPicker
, एक ठीक है, और एक रद्द है।नंबरपिकर
package org.dyndns.schep.example;
import android.os.Bundler;
import android.view.View;
import android.widget.NumberPicker;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
public class FooFragment extends DialogFragment {
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mParent = (MainActivity) activity;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setPositiveButton(android.R.string.ok,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
mParent.setFoo(foo());
}
})
.setNegativeButton(android.R.string.cancel, null);
View view = getActivity().getLayoutInflater.inflate(
R.layout.dialog_foo, null);
mPicker = (NumberPicker) view.findViewById(R.id.numberPicker1);
mPicker.setValue(mParent.getFoo());
builder.setView(view);
return builder.create();
}
public int foo() {
return mPicker.getValue();
}
private MainActivity mParent;
private NumberPicker mPicker;
}
(यह संवाद अभी तक बातें यह रोकें पर राज्य को बचाने के लिये और फिर से शुरू करें, मुझे पता है। चाहिए नहीं है)
मैं नरम कुंजीपटल या अन्य IME पर "पूर्ण" कार्रवाई चाहते हैं संवाद को खारिज करने के लिए "ठीक" दबाया गया था, क्योंकि संपादित करने के लिए केवल एक विजेट है।
ऐसा लगता है कि एक आईएमई "होन" से निपटने का सबसे अच्छा तरीका आमतौर पर TextView
पर setOnEditorActionListener
पर है। लेकिन मेरे पास TextView
वैरिएबल नहीं है, और NumberPicker
स्पष्ट रूप से TextView
, या इसी तरह के संपादक कॉलबैक का पर्दाफाश नहीं करता है। (हो सकता है कि NumberPicker
एक निरंतर आईडी मैं findViewById
उपयोग करने के लिए खोज सकते हैं के साथ एक TextView
शामिल?)
NumberPicker.setOnValueChangedListener
"पूर्ण" कार्रवाई पर शुरू हो रहा हो जाता है, लेकिन यह भी आग जब दोहन या नंबर, की सूची flicking जो निश्चित रूप से नहीं करना चाहिए संवाद को खारिज कर दें।
this प्रश्न के आधार पर, मैंने setOnKeyListener
की जांच करने का प्रयास किया, लेकिन सॉफ्ट इंटरफ़ेस का उपयोग करते समय वह इंटरफ़ेस ट्रिगर नहीं हुआ। कुल आश्चर्य नहीं है, क्योंकि KeyEvent
दस्तावेज़ीकरण से पता चलता है कि यह हार्डवेयर घटनाओं के लिए अधिक है, और हाल के एपीआई में सॉफ्ट कीबोर्ड उन्हें बिल्कुल नहीं भेजेगा।
मैं अपने संवाद की "ठीक" कार्रवाई में आईएमई "पूर्ण" कैसे कनेक्ट कर सकता हूं?
संपादित करें: स्रोत के दिखता से, एक NumberPicker
लेआउट एक EditText
शामिल करता है, लेकिन अपने आईडी पैकेज com.android.internal
में id/numberpicker_input
है। इसका उपयोग करना आसान नहीं होगा, और स्पष्ट रूप से निराश है। लेकिन ऐसा लगता है कि व्यवहार करने के लिए केवल हैक तरीके ही हो सकते हैं।
क्या आपने किसी भी कस्टम नंबर पिकर की कोशिश की है जो पुराने एंड्रॉइड संस्करणों के अनुकूल है। मुझे यकीन है कि आपके पास उनके 'एडिटटेक्स्ट' आईडी तक पहुंच होगी। आप इसे देख सकते हैं: https://github.com/SimonVT/android-numberpicker – Naveen