NumberPickerDialog को मान कैसे प्राप्त करें?

मैं नंबरपिकर को संभालने के लिए कक्षा का उपयोग कर रहा हूं और मैं कक्षा से मूल्यों के साथ एक बटन का पाठ सेट करना चाहता हूं। मैं नंबर पिकरडियलॉग में छह नंबर पिकर का उपयोग कर रहा हूं।

यह कक्षा है:

public class NumberPickerDialog extends AlertDialog implements OnClickListener {
private OnNumberSetListener mListener;
private NumberPicker mNumberPicker1;
private NumberPicker mNumberPicker2;
private NumberPicker mNumberPicker3;
private NumberPicker mNumberPicker4;
private NumberPicker mNumberPicker5;
private NumberPicker mNumberPicker6;

int n1; 
int n2; 
int n3; 
int n4;
int n5;
int n6;

private int mInitialValue;

public NumberPickerDialog(Context context, int theme, int initialValue) {
    super(context, theme);
    mInitialValue = initialValue;

    setButton(BUTTON_POSITIVE, "Confirmar", this);        
    setTitle("Valor Atual do Hodômetro (em Km)");

    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view = inflater.inflate(R.layout.sixnumber, null);
    setView(view);

    mNumberPicker1 = (NumberPicker) view.findViewById(R.id.num_picker1);
    mNumberPicker2 = (NumberPicker) view.findViewById(R.id.num_picker2);
    mNumberPicker3 = (NumberPicker) view.findViewById(R.id.num_picker3);
    mNumberPicker4 = (NumberPicker) view.findViewById(R.id.num_picker4);
    mNumberPicker5 = (NumberPicker) view.findViewById(R.id.num_picker5);
    mNumberPicker6 = (NumberPicker) view.findViewById(R.id.num_picker6);

}

/**
 * Retrieve the number picker used in the dialog
 */    
public NumberPicker getmNumberPicker1() {
    return mNumberPicker1;
}

public NumberPicker getmNumberPicker2() {
    return mNumberPicker2;
}

public NumberPicker getmNumberPicker3() {
    return mNumberPicker3;
}

public NumberPicker getmNumberPicker4() {
    return mNumberPicker4;
}

public NumberPicker getmNumberPicker5() {
    return mNumberPicker5;
}

public NumberPicker getmNumberPicker6() {
    return mNumberPicker6;
}

/**
 * Set the range allowed for the number picker
 * @param start the minimum allowed value
 * @param end the maximum allowed value     * 
 * and setting the value directly.
 */

public void setRange1(int start, int end) {
    mNumberPicker1.setRange(start, end);

}

public void setRange2(int start, int end) {
    mNumberPicker2.setRange(start, end);

}

public void setRange3(int start, int end) {
    mNumberPicker3.setRange(start, end);

}

public void setRange4(int start, int end) {
    mNumberPicker4.setRange(start, end);

}

public void setRange5(int start, int end) {
    mNumberPicker5.setRange(start, end);

}    

public void setRange6(int start, int end) {
    mNumberPicker6.setRange(start, end);

}

/**
 * Set the wrap option for the number picker
 * @param wrap true if values need to wrap
 * @deprecated Instead this can be set by retrieving the numberpicker
 * and setting the value directly.
 */

/**
 * Set the range for the number picker and the values to display
 * @param start the minimum allowed value
 * @param end the maximum allowed value
 * @param displayedValues values to display in the numberpicker instead of
 * the integer values of the range
 * @deprecated Instead this can be set by retrieving the numberpicker
 * and setting the value directly.
 */

public void setOnNumberSetListener(OnNumberSetListener listener) {
    mListener = listener;
}

@Override
public void onClick(DialogInterface dialog, int which) {       
    if(which == BUTTON_POSITIVE){
         n1 = mNumberPicker1.getCurrent();
         n2 = mNumberPicker2.getCurrent();
         n3 = mNumberPicker3.getCurrent();
         n4 = mNumberPicker4.getCurrent();
         n5 = mNumberPicker5.getCurrent();
         n6 = mNumberPicker6.getCurrent(); 

         Button btHodometro = (Button)findViewById(R.id.btHodometroAbastecimento);
         btHodometro.setText(""+n1 + n2 + n3 + n4 + n5 + n6);
    }  

}

public interface OnNumberSetListener {
    public void onNumberSet(int selectedNumber);    

}   


public int getN1() {
    return n1;
}

public int getN2() {
    return n2;
}

public int getN3() {
    return n3;
}

public int getN4() {
    return n4;
}

public int getN5() {
    return n5;
}

public int getN6() {
    return n6;
}   

}

समस्या यह है कि जब मैं पाठ के बटम (bt.setText ()) को सेट करने का प्रयास करता हूं तो यह मुझे एक त्रुटि देता है।

11-22 15:36:44.489: E/AndroidRuntime(6733): FATAL EXCEPTION: main
11-22 15:36:44.489: E/AndroidRuntime(6733): java.lang.NullPointerException
11-22 15:36:44.489: E/AndroidRuntime(6733):     at br.com.going2.carrorama.helper.NumberPickerDialog.onClick(NumberPickerDialog.java:146)
11-22 15:36:44.489: E/AndroidRuntime(6733):     at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:165)
11-22 15:36:44.489: E/AndroidRuntime(6733):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-22 15:36:44.489: E/AndroidRuntime(6733):     at android.os.Looper.loop(Looper.java:130)
11-22 15:36:44.489: E/AndroidRuntime(6733):     at android.app.ActivityThread.main(ActivityThread.java:3687)
11-22 15:36:44.489: E/AndroidRuntime(6733):     at java.lang.reflect.Method.invokeNative(Native Method)
11-22 15:36:44.489: E/AndroidRuntime(6733):     at java.lang.reflect.Method.invoke(Method.java:507)
11-22 15:36:44.489: E/AndroidRuntime(6733):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)
11-22 15:36:44.489: E/AndroidRuntime(6733):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636)
11-22 15:36:44.489: E/AndroidRuntime(6733):     at dalvik.system.NativeStart.main(Native Method)

मैं क्या खो रहा हूँ?

0
जोड़ा संपादित
विचारों: 1

1 उत्तर

चूंकि मुझे नहीं पता कि आपके कोड में कौन सी रेखा 146 है, मुझे लगता है कि यह ठीक है आपकी समस्या है।

Button btHodometro = (Button)findViewById(R.id.btHodometroAbastecimento);
     btHodometro.setText(""+n1 + n2 + n3 + n4 + n5 + n6);

btHodometro is null because it cannot find it in your view, you either dont have it in your view or you are not giving it the right view to use.

यदि यह बटन आपके R.layout.sixnumber लेआउट में है तो आपको इसे अपने कन्स्ट्रक्टर में प्रारंभ करना चाहिए जैसे कि आप अन्य तत्व करते हैं

0
जोड़ा
इस लाइन पर सही त्रुटि है। यह बटन मेरी गतिविधि में है, जब मैं इसे क्लिक करता हूं, तो यह संवाद प्रकट होता है और R.layout.sixnumber को लेआउट के रूप में कॉल करता है। मैं बटन को कॉल क्यों कर रहा हूं? यह मेरी गतिविधि में है।
जोड़ा लेखक Roland, स्रोत
मैं उसको कैसे करू?
जोड़ा लेखक Roland, स्रोत
इसकी दुर्घटनाग्रस्त हो रही है क्योंकि यदि कोई संवाद हो रहा है तो गतिविधि को अब और देखने में नहीं है जब आपको बटन सेट करने के लिए संवाद बंद होने पर गतिविधि में कॉलबैक बनाना होगा
जोड़ा लेखक tyczj, स्रोत
एक के लिए आपको टुकड़ों का उपयोग करना चाहिए और फिर आप इसे इस developer.android की तरह कर सकते हैं .com/गाइड/घटकों/& hellip;
जोड़ा लेखक tyczj, स्रोत