刚开始学Android,学着书上写了个程序结果运行就直接异常关闭了,求高手帮忙看看~

Allen_hust 2012-04-19 02:10:14
import java.util.Calendar;
import android.app.Activity;
import android.os.Bundle;
import android.widget.DatePicker;
import android.widget.DatePicker.OnDateChangedListener;
import android.widget.TextView;

public class MMSActivity extends Activity {
/** Called when the activity is first created. */
private DatePicker datepicker;
private TextView textview;
Calendar calendar;
int cur_year,cur_month,cur_day;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

datepicker=(DatePicker)this.findViewById(R.id.DatePicker);
textview=(TextView)this.findViewById(R.id.TextView);

calendar=Calendar.getInstance();
cur_year=calendar.get(Calendar.YEAR);
cur_month=calendar.get(Calendar.MONTH+1);
cur_day=calendar.get(Calendar.DAY_OF_MONTH);

textview.setText("当前时间:"+cur_year+"年"+cur_month+"月"+cur_day+"日");
datepicker.init(cur_year,cur_month,cur_day,new MyDateChangedListener());

}
private class MyDateChangedListener implements OnDateChangedListener{
public void onDateChanged(DatePicker view,int year,int monthOfYear,int dayOfMonth){
cur_year=year;
cur_month=monthOfYear;
cur_day=dayOfMonth;
textview.setText("当前时间:"+cur_year+"年"+cur_month+"月"+cur_day+"日");
}
}
}


PS:通过日期选择器修改日期,调整后的日期用文本框视图显示。仿照书上所写,请高手帮忙
...全文
335 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mikite 2012-11-15
  • 打赏
  • 举报
回复
盗版害死人啊
wl1975sdm 2012-11-02
  • 打赏
  • 举报
回复
datepicker=(DatePicker)this.findViewById(R.id.DatePicker);
textview=(TextView)this.findViewById(R.id.TextView);
是不是要强制转换一下的问题?如改成这样:

DatePicker datepicker=(DatePicker)this.findViewById(R.id.DatePicker);
TextView=(TextView)this.findViewById(R.id.TextView);

Allen_hust 2012-04-19
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 的回复:]
引用 22 楼 的回复:

引用 20 楼 的回复:
。。如果没有 加1 那说明 还是要加到括号里面的。。或者是 你那个参数设置错误 了

在括号里面+1的程序运行就直接强制退出了,我也不知道为什么。不过我不在那个地方+1了,在显示月份的时候+1就行了
textview.setText("当前时间:"+cur_year+"年"+(cur_month+1)+"月"+cur_day+"日"……
[/Quote]

书上写的就是括号内+1的,而且注释上也写着getMonth返回的月份值是0~11.我觉得有可能是书上程序运行的版本和我自己编程的版本不同,或者是书上的eclipse版本和我用的不同,才会出现这种问题。
qqxhml 2012-04-19
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 的回复:]

引用 20 楼 的回复:
。。如果没有 加1 那说明 还是要加到括号里面的。。或者是 你那个参数设置错误 了

在括号里面+1的程序运行就直接强制退出了,我也不知道为什么。不过我不在那个地方+1了,在显示月份的时候+1就行了
textview.setText("当前时间:"+cur_year+"年"+(cur_month+1)+"月"+cur_day+"日");
[/Quote]

编程的 起始是0 所以应该只是 参数的问题。。 不过只要控制好 输出的地方就好了
Allen_hust 2012-04-19
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 的回复:]
。。如果没有 加1 那说明 还是要加到括号里面的。。或者是 你那个参数设置错误 了
[/Quote]
在括号里面+1的程序运行就直接强制退出了,我也不知道为什么。不过我不在那个地方+1了,在显示月份的时候+1就行了
textview.setText("当前时间:"+cur_year+"年"+(cur_month+1)+"月"+cur_day+"日");
Allen_hust 2012-04-19
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 的回复:]
引用 17 楼 的回复:
引用 16 楼 的回复:
引用 9 楼 的回复:
引用 7 楼 的回复:
引用 4 楼 的回复:
引用 1 楼 的回复:
布局文件 main.xml文件中有DatePicker 吗?

添加了DatePicker和TextView了的,然后ID本来是datePicker1和textView1,由于报错我就把它改成DatePicker和TextView了,是……
[/Quote]
只有把显示的那里改改了
textview.setText("当前时间:"+cur_year+"年"+(cur_month+1)+"月"+cur_day+"日");
运行成功,功能达到
qqxhml 2012-04-19
  • 打赏
  • 举报
回复
。。如果没有 加1 那说明 还是要加到括号里面的。。或者是 你那个参数设置错误 了
Allen_hust 2012-04-19
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 的回复:]
引用 17 楼 的回复:
引用 16 楼 的回复:
引用 9 楼 的回复:
引用 7 楼 的回复:
引用 4 楼 的回复:
引用 1 楼 的回复:
布局文件 main.xml文件中有DatePicker 吗?

添加了DatePicker和TextView了的,然后ID本来是datePicker1和textView1,由于报错我就把它改成DatePicker和TextView了,是……
[/Quote]
不过又有问题了,月份没有+1啊,这样写可以跑出来但是功能错了,还需要改改
zgzleo 2012-04-19
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 的回复:]
引用 16 楼 的回复:
引用 9 楼 的回复:
引用 7 楼 的回复:
引用 4 楼 的回复:
引用 1 楼 的回复:
布局文件 main.xml文件中有DatePicker 吗?

添加了DatePicker和TextView了的,然后ID本来是datePicker1和textView1,由于报错我就把它改成DatePicker和TextView了,是不是这个的问题啊?


……
[/Quote]

。。。。。。。。原来是盗版书的错= =!
Allen_hust 2012-04-19
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 的回复:]
引用 9 楼 的回复:
引用 7 楼 的回复:
引用 4 楼 的回复:
引用 1 楼 的回复:
布局文件 main.xml文件中有DatePicker 吗?

添加了DatePicker和TextView了的,然后ID本来是datePicker1和textView1,由于报错我就把它改成DatePicker和TextView了,是不是这个的问题啊?


datepicker=(D……
[/Quote]
嗯,不过确实是书错了,我没抄错。盗版书害死人啊!!!
再次谢谢了,运行地很好~
zgzleo 2012-04-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
引用 7 楼 的回复:
引用 4 楼 的回复:
引用 1 楼 的回复:
布局文件 main.xml文件中有DatePicker 吗?

添加了DatePicker和TextView了的,然后ID本来是datePicker1和textView1,由于报错我就把它改成DatePicker和TextView了,是不是这个的问题啊?


datepicker=(DatePicker)thi……
[/Quote]


LZ。。。我晕哦。。。你要直接把错误报告贴出来我直接找出错误了。。你这样说我真一直没看出来= =!!
我把你贴的代码复制到自己电脑上运行了下,错误根本不在XML文件嘛= =!
这个代码错在这一句:cur_month=calendar.get(Calendar.MONTH+1);。。。。
应该改成cur_month=calendar.get(Calendar.MONTH)+1;
我估计书上没错的,应该是LZ抄错了。
其实错误日志已经把错误说得比较清楚了。。月份应该是1到12月,从日历取出来的月份是0-11.
我一看。。果然是月份那儿错了。。LZ抄书上代码不仔细啊= =!!
Ha3k4r 2012-04-19
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]
引用 13 楼 的回复:
引用 12 楼 的回复:
引用 11 楼 的回复:
引用 6 楼 的回复:
引用 3 楼 的回复:
我一直研究 VB .

请问 写 Android 用什么编译?

用eclipse,具体配置有点复杂,可以在网上找,有很多


多谢了 下了两个版本了 . 英文的.
若有中文版的麻烦共享下吧...

还需要JDK、Android SDK、貌似还……
[/Quote]


QQ: 595949417 求交流.
Allen_hust 2012-04-19
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]
引用 12 楼 的回复:
引用 11 楼 的回复:
引用 6 楼 的回复:
引用 3 楼 的回复:
我一直研究 VB .

请问 写 Android 用什么编译?

用eclipse,具体配置有点复杂,可以在网上找,有很多


多谢了 下了两个版本了 . 英文的.
若有中文版的麻烦共享下吧...

还需要JDK、Android SDK、貌似还没有发现有汉化的


……
[/Quote]
那肯定是大神级别的了,我是新手,还很多不知道的
Ha3k4r 2012-04-19
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]
引用 11 楼 的回复:
引用 6 楼 的回复:
引用 3 楼 的回复:
我一直研究 VB .

请问 写 Android 用什么编译?

用eclipse,具体配置有点复杂,可以在网上找,有很多


多谢了 下了两个版本了 . 英文的.
若有中文版的麻烦共享下吧...

还需要JDK、Android SDK、貌似还没有发现有汉化的
[/Quote]

有这么麻烦? 听一业界网友说的 可以用 txt编译的?
Allen_hust 2012-04-19
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]
引用 6 楼 的回复:
引用 3 楼 的回复:
我一直研究 VB .

请问 写 Android 用什么编译?

用eclipse,具体配置有点复杂,可以在网上找,有很多


多谢了 下了两个版本了 . 英文的.
若有中文版的麻烦共享下吧...
[/Quote]
还需要JDK、Android SDK、貌似还没有发现有汉化的
Ha3k4r 2012-04-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
引用 3 楼 的回复:
我一直研究 VB .

请问 写 Android 用什么编译?

用eclipse,具体配置有点复杂,可以在网上找,有很多
[/Quote]

多谢了 下了两个版本了 . 英文的.
若有中文版的麻烦共享下吧...
Allen_hust 2012-04-19
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
可否把xml文件粘上来一看
[/Quote]
嗯,见楼上
Allen_hust 2012-04-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
引用 4 楼 的回复:
引用 1 楼 的回复:
布局文件 main.xml文件中有DatePicker 吗?

添加了DatePicker和TextView了的,然后ID本来是datePicker1和textView1,由于报错我就把它改成DatePicker和TextView了,是不是这个的问题啊?


datepicker=(DatePicker)this.findViewBy……
[/Quote]
我的main.xml写成
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >



<DatePicker
android:id="@+id/DP"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

<TextView
android:id="@+id/TV"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

</LinearLayout>

同时将原来红色部分改为
datepicker=(DatePicker)this.findViewById(R.id.DP);
textview=(TextView)this.findViewById(R.id.TV);
编译没有问题,一运行就异常退出了
ljytest886 2012-04-19
  • 打赏
  • 举报
回复
可否把xml文件粘上来一看
zgzleo 2012-04-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
引用 1 楼 的回复:
布局文件 main.xml文件中有DatePicker 吗?

添加了DatePicker和TextView了的,然后ID本来是datePicker1和textView1,由于报错我就把它改成DatePicker和TextView了,是不是这个的问题啊?
[/Quote]

datepicker=(DatePicker)this.findViewById(R.id.DatePicker);
findViewById这个函数的意思就是通过控件的ID来找到这个控件,你的ID是什么,就用哪个参数
举个例子<DatePicker android:id="@+id/dp"/>//说明此控件的ID就是dp,在Activity中就用下面这个语句找到:datepicker=(DatePicker)this.findViewById(R.id.dp);
写ID的时候一定记得android:id="@+id/dp"这样写,@+id不要少,他是帮你在R.java文件中自动生成该控件的ID号。
这样说 不知道LZ问题解决没?
加载更多回复(6)

80,493

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧