在本文中,我们将给您介绍关于java-AndroidNumberPickerNullPointer为什么?的详细内容,并且为您解答javanullpointerexception的相关问题,此外,我们
在本文中,我们将给您介绍关于java-Android NumberPicker NullPointer为什么?的详细内容,并且为您解答java null pointer exception的相关问题,此外,我们还将为您提供关于Android CalendarView,DatePicker,TimePicker,以及NumberPicker的使用、Android Number Picker获得textview的价值、Android NumberPickerDialog、Android NumberPicker小部件,如何通过软键盘输入值?的知识。
本文目录一览:- java-Android NumberPicker NullPointer为什么?(java null pointer exception)
- Android CalendarView,DatePicker,TimePicker,以及NumberPicker的使用
- Android Number Picker获得textview的价值
- Android NumberPickerDialog
- Android NumberPicker小部件,如何通过软键盘输入值?
java-Android NumberPicker NullPointer为什么?(java null pointer exception)
我试图实现一个numberPicker以选择分钟值.
但是我在这一行收到一个NullPointer异常:
minutesPicker =(NumberPicker)findViewById(R.id.minuten_picker);
以下代码:
public class MainActivity extends Activity {
NumberPicker minutePicker;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Auswahl Minuten zum starten / Stoppen aller
minutePicker = new NumberPicker(MainActivity.this);
minutePicker = (NumberPicker) findViewById(R.id.minuten_picker);
minutePicker.setMaxValue(30);
minutePicker.setonValueChangedListener(new NumberPicker.OnValuechangelistener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
abschaltzeit = minutePicker.getValue();
}
});
minutePicker.setValue(0);
minutePicker.setWrapSelectorWheel(false);
}
}
XML:
<NumberPicker
android:id="@+id/minuten_picker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_row="6"
android:layout_column="0"
android:paddingLeft="20dp" />
日志:
09-25 11:00:09.749 10687-10687/de.carsten.awesome.app E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: de.carsten.awesome.app, PID: 10687
java.lang.RuntimeException: Unable to start activity ComponentInfo{de.carsten.awesome.app/de.carsten.awesome.app.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:2184)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at de.carsten.awesome.app.MainActivity.onCreate(MainActivity.java:83)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:2148)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
解决方法:
minutePicker = new NumberPicker(MainActivity.this);
minutePicker = (NumberPicker) findViewById(R.id.minuten_picker);
您正在以编程方式创建NumberPicker,然后用findViewById()返回的值覆盖引用.如果您的activity_main布局不包含minutesn_picker,则返回null.
>仅选择另一个:以编程方式创建它,或者从您夸大的视图层次结构中找到它.
>如果您选择以编程方式new NumberPicker(),请记住将其添加到活动视图层次结构中的某些布局,例如与setContentView()
>如果选择充气方式,请确保在XML布局文件中具有视图.
我猜您正在看到的NPE实际上在以下行中,您正在尝试在minutePicker上调用一个方法,该方法为null.
Android CalendarView,DatePicker,TimePicker,以及NumberPicker的使用
Android CalendarView,DatePicker,TimePicker,以及NumberPicker的使用
简单复习下基础UI组件,做个简单的总结,Android的这些组件封装的特别好,基本套上就能使用,当然,这个减轻了开发者的负担!不过如果想要深入研究,这里面还是有很大的空间值得深度分析!简单的几个例子!仅供参考:
不多说,先上效果图:
CalendarView
ChooseView
NumberPicker
CalendarView代码区 :
main.xml代码区:CalendarView组件的使用加上一些简单的属性即可!
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="选择您的生日:"/> <!-- 设置以星期二作为每周第一天 设置该组件总共显示4个星期 并对该组件的日期时间进行了定制 --> <CalendarView android:layout_width="match_parent" android:layout_height="match_parent" android:firstDayOfWeek="3" android:shownWeekCount="4" android:selectedWeekBackgroundColor="#aff" android:focusedMonthDateColor="#f00" android:weekSeparatorLineColor="#ff0" android:unfocusedMonthDateColor="#f9f" android:id="@+id/calendarView" /> </LinearLayout>
Activity区代码:
public class MainActivity extends Activity { CalendarView cv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); cv = (CalendarView)findViewById(R.id.calendarView); // 为CalendarView组件的日期改变事件添加事件监听器 cv.setonDatechangelistener(new OnDatechangelistener() { @Override public void onSelectedDayChange(CalendarView view,int year,int month,int dayOfMonth) { // 使用Toast显示用户选择的日期 Toast.makeText(MainActivity.this,"你生日是" + year + "年" + month + "月" + dayOfMonth + "日",Toast.LENGTH_SHORT).show(); } }); } }
DatePicker,结合Calerdar的使用,可以供用户选择日期时使用:
代码区:
main.xml代码:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="选择购买本书的具体时间"/> <!-- 定义一个DatePicker组件 --> <DatePicker android:id="@+id/datePicker" android:layout_width="wrap_content" android:layout_height="200dp" android:layout_gravity="center_horizontal" android:startYear="2000" android:endYear="2016" android:calendarViewShown="true" android:spinneRSShown="true"/> <!-- 定义一个TimePicker组件 --> <TimePicker android:id="@+id/timePicker" android:layout_width="wrap_content" android:layout_height="100dp" android:layout_gravity="center_horizontal"/> <!-- 显示用户输入日期、时间的控件 --> <EditText android:id="@+id/show" android:layout_width="match_parent" android:layout_height="wrap_content" android:editable="false" android:cursorVisible="false"/> </LinearLayout>
Activity代码:
public class MainActivity extends Activity { // 定义5个记录当前时间的变量 private int year; private int month; private int day; private int hour; private int minute; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); DatePicker datePicker = (DatePicker) findViewById(R.id.datePicker); TimePicker timePicker = (TimePicker) findViewById(R.id.timePicker); // 获取当前的年、月、日、小时、分钟 Calendar c = Calendar.getInstance(); year = c.get(Calendar.YEAR); month = c.get(Calendar.MONTH); day = c.get(Calendar.DAY_OF_MONTH); hour = c.get(Calendar.HOUR); minute = c.get(Calendar.MINUTE); // 初始化DatePicker组件,初始化时指定监听器 datePicker.init(year,month,day,new OnDateChangedListener() { @Override public void onDateChanged(DatePicker arg0,int day) { MainActivity.this.year = year; MainActivity.this.month = month; MainActivity.this.day = day; // 显示当前日期、时间 showDate(year,hour,minute); } }); timePicker.setEnabled(true); // 为TimePicker指定监听器 timePicker.setonTimeChangedListener(new OnTimeChangedListener() { @Override public void onTimeChanged(TimePicker view,int hourOfDay,int minute) { MainActivity.this.hour = hourOfDay; MainActivity.this.minute = minute; // 显示当前日期、时间 showDate(year,minute); } }); } // 定义在EditText中显示当前日期、时间的方法 private void showDate(int year,int day,int hour,int minute) { EditText show = (EditText) findViewById(R.id.show); show.setText("您的购买日期为:" + year + "年" + (month + 1) + "月" + day + "日 " + hour + "时" + minute + "分"); } }
NumberPicker主要使用在给用户提供数字选择时使用。
main.xml代码:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> <TableRow android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:text="选择低价:" android:layout_width="120dp" android:layout_height="wrap_content" /> <NumberPicker android:id="@+id/np1" android:layout_width="match_parent" android:layout_height="80dp" android:focusable="true" android:focusableInTouchMode="true" /> </TableRow> <TableRow android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:text="选择高价:" android:layout_width="120dp" android:layout_height="wrap_content" /> <NumberPicker android:id="@+id/np2" android:layout_width="match_parent" android:layout_height="80dp" android:focusable="true" android:focusableInTouchMode="true" /> </TableRow> </TableLayout>
Activity代码:
public class MainActivity extends Activity { NumberPicker np1,np2; // 定义最低价格、最高价格的初始值 int minPrice = 25,maxPrice = 75; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); np1 = (NumberPicker) findViewById(R.id.np1); // 设置np1的最小值和最大值 np1.setMinValue(10); np1.setMaxValue(50); // 设置np1的当前值 np1.setValue(minPrice); np1.setonValueChangedListener(new OnValuechangelistener() { // 当NumberPicker的值发生改变时,将会激发该方法 @Override public void onValueChange(NumberPicker picker,int oldVal,int newVal) { minPrice = newVal; showSelectedPrice(); } }); np2 = (NumberPicker) findViewById(R.id.np2); // 设置np2的最小值和最大值 np2.setMinValue(60); np2.setMaxValue(100); // 设置np2的当前值 np2.setValue(maxPrice); np2.setonValueChangedListener(new OnValuechangelistener() { // 当NumberPicker的值发生改变时,将会激发该方法 @Override public void onValueChange(NumberPicker picker,int newVal) { maxPrice = newVal; showSelectedPrice(); } }); } private void showSelectedPrice() { Toast.makeText(this,"您选择最低价格为:" + minPrice + ",最高价格为:" + maxPrice,Toast.LENGTH_SHORT) .show(); } }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
Android Number Picker获得textview的价值
我正在使用带有数字选择器的警报对话框,但是当我按下警报的“确定”按钮时,我不知道在活动中将te数字选择器值提供给textview的简单方法.
活动java代码:
public class SecondActivity extends Activity {
public void button2 (View v){
View v1 = getLayoutInflater().inflate(R.layout.dialog1,null);
NumberPicker picker = (NumberPicker) v1.findViewById(R.id.np1);
picker.setMinValue(1);
picker.setMaxValue(20);
picker.setWrapSelectorWheel(false);
//final int number = picker.getValue();
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView (v1);
builder.setTitle("Cantidad");
builder.setPositiveButton(android.R.string.ok,new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int which) {
return;
} });
builder.setNegativeButton(android.R.string.cancel,int which) {
return;
} });
AlertDialog dialog = builder.create();
dialog.show();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
}
}
显示布局:
活动布局:
ottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="ale.demarco.ale005.SecondActivity$PlaceholderFragment" >
ravity="right" />
最佳答案
使用picker.getValue()获取选择器的当前值.
选中“对话框”按钮后,使用选定的值更新“活动”中的TextView
builder.setPositiveButton(android.R.string.ok,new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int which) {
int pickedValue = picker.getValue();
// set your TextView id instead of R.id.textView1
TextView textView = (TextView)findViewById(R.id.textView1);
textView.setText(Integer.toString(pickedValue));
return;
} });
您还可以添加侦听器来侦听这样的数字更改
picker.setonValueChangedListener(new NumberPicker.OnValuechangelistener() {
@Override
public void onValueChange(NumberPicker picker,int oldVal,int newVal) {
// do your other stuff depends on the new value
}
});
Android NumberPickerDialog
参考1:http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android-apps/2.0_r1/com/android/mms/ui/NumberPickerDialog.java?av=h
参考2:http://blog.csdn.net/sun_star1chen/article/details/16330459#
参考3:TimePickerDialog源码
遇到问题:
设置NumberPicker不可编辑
mNumberPicker.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
参考:http://blog.csdn.net/yanjiee/article/details/42237631
弹出NumberPicker的同时,不弹出系统软键盘
((EditText) mNumberPicker.getChildAt(0)).setInputType(InputType.TYPE_NULL);
参考:http://www.xuebuyuan.com/408875.html
android DatePickerDialog theme :
原文:http://blog.csdn.net/lckj686/article/details/19552793
android datepicker disable keyboard:弹出日期选择框的时候,不弹出软键盘
private void setDisabledTextViews(ViewGroup dp) {
for (int x = 0, n = dp.getChildCount(); x < n; x++) {
View v = dp.getChildAt(x);
if (v instanceof EditText) {
//v.setEnabled(false);
((EditText) v).setInputType(InputType.TYPE_NULL);
} else if (v instanceof ViewGroup) {
setDisabledTextViews((ViewGroup)v);
}
}
}
setDisabledTextViews(mDatePicker);
setDisabledTextViews(mTimePicker);
参考:http://androiddiscuss.com/1-android-discuss/13392.html
Android NumberPicker小部件,如何通过软键盘输入值?
这是我的XML布局:
<LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/textView1" android:layout_weight="1" android:textAppearance="?android:attr/textAppearanceLarge" android:layout_height="wrap_content" android:text="@string/enter_nights_" android:layout_width="0dp" android:padding="10dip" android:textColor="@color/black" ></TextView> <NumberPicker android:id="@+id/numPick" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
和我的Activity onCreate()中的初始化代码:
mNumNights = (NumberPicker) findViewById(R.id.numPick); mNumNights.setMinValue(1); mNumNights.setMaxValue(99); mNumNights.setValue(mNights); mNumNights.setonValueChangedListener(new NumberPicker.OnValuechangelistener() { @Override public void onValueChange(NumberPicker picker,int oldVal,int newVal) { // do something here Log.d(TAG,"Number of Nights change value."); } });
从Activity中退出时,我得到的值如下:
mNights = mNumNights.getValue();
我在Android NumberPicker documentation中没有看到任何其他方法.我确实看到post建议挂钩onEditorActionListener()来获取完成按钮,但是这并没有告诉我如何获取值!总而言之,我的问题是如何获取值以及为什么NumberPicker不会自动更新其值?
谢谢!
编辑:我偶然发现了这个与我的问题非常相似的SO question,那里的答案看起来很有帮助,虽然我希望有一个比那里更好的方法.
解决方法
今天关于java-Android NumberPicker NullPointer为什么?和java null pointer exception的讲解已经结束,谢谢您的阅读,如果想了解更多关于Android CalendarView,DatePicker,TimePicker,以及NumberPicker的使用、Android Number Picker获得textview的价值、Android NumberPickerDialog、Android NumberPicker小部件,如何通过软键盘输入值?的相关知识,请在本站搜索。
本文标签: