Android 中标日期';t在我指定的文本视图中显示
所以我在这里看了很多问题,一直在寻找答案,但毫无结果 我的问题是textView:myDateTimeTextView中没有显示任何内容。 我希望显示当前日期 代码如下:Android 中标日期';t在我指定的文本视图中显示,android,Android,所以我在这里看了很多问题,一直在寻找答案,但毫无结果 我的问题是textView:myDateTimeTextView中没有显示任何内容。 我希望显示当前日期 代码如下: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (sa
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
}
public class currentDateTime extends AsyncTask<Object, Void, String>{
protected String doInBackground(Object... arg0) {
TextView myDateTextView = (TextView)findViewById(R.id.myDateTextView);
String currentDateTimeString = DateFormat.getDateTimeInstance().format(new Date());
myDateTextView.setText(currentDateTimeString);
String Format = "EEEE, MMMM dd, YYYY";
Date today = new Date(); SimpleDateFormat sdf = new SimpleDateFormat(Format, Locale.ENGLISH); System.err.format("%30s %s\n", Format, sdf.format(today));
return currentDateTimeString;
}
}
这是LogCat
06-14 07:26:15.483:D/gralloc_金鱼(856):未检测到GPU仿真的仿真器。
06-14 07:26:16.173:W/dalvikvm(856):threadid=11:线程退出时出现未捕获异常(组=0x41465700)
06-14 07:26:16.203:E/AndroidRuntime(856):致命异常:AsyncTask#1
06-14 07:26:16.203:E/AndroidRuntime(856):java.lang.RuntimeException:执行doInBackground()时出错
06-14 07:26:16.203:E/AndroidRuntime(856):在android.os.AsyncTask$3.done(AsyncTask.java:299)
06-14 07:26:16.203:E/AndroidRuntime(856):在java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
06-14 07:26:16.203:E/AndroidRuntime(856):在java.util.concurrent.FutureTask.setException(FutureTask.java:219)
06-14 07:26:16.203:E/AndroidRuntime(856):在java.util.concurrent.FutureTask.run(FutureTask.java:239)
06-14 07:26:16.203:E/AndroidRuntime(856):在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
06-14 07:26:16.203:E/AndroidRuntime(856):位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
06-14 07:26:16.203:E/AndroidRuntime(856):在java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
06-14 07:26:16.203:E/AndroidRuntime(856):在java.lang.Thread.run(Thread.java:841)
06-14 07:26:16.203:E/AndroidRuntime(856):由以下原因引起:java.lang.IllegalArgumentException:未知模式字符“Y”
06-14 07:26:16.203:E/AndroidRuntime(856):位于java.text.simpleDataFormat.validateFormat(simpleDataFormat.java:264)
06-14 07:26:16.203:E/AndroidRuntime(856):在java.text.simpleDataFormat.validatePattern(simpleDataFormat.java:319)
06-14 07:26:16.203:E/AndroidRuntime(856):位于java.text.simpleDataFormat.(simpleDataFormat.java:365)
06-14 07:26:16.203:E/AndroidRuntime(856):在com.mikitz.baalpha1blank.MainActivity$currentDateTime.doInBackground(MainActivity.java:49)
06-14 07:26:16.203:E/AndroidRuntime(856):位于com.mikitz.baalpha1blank.MainActivity$currentDateTime.doInBackground(MainActivity.java:1)
06-14 07:26:16.203:E/AndroidRuntime(856):在android.os.AsyncTask$2.call(AsyncTask.java:287)
06-14 07:26:16.203:E/AndroidRuntime(856):在java.util.concurrent.FutureTask.run(FutureTask.java:234)
06-14 07:26:16.203:E/AndroidRuntime(856):。。。4更多
06-14 07:26:18.983:I/编舞(856):跳过36帧!应用程序可能在其主线程上做了太多工作。
06-14 07:26:20.454:I/进程(856):发送信号。PID:856 SIG:9
在最后一个中的onCreate()
方法中添加此行:
new currentDateTime().execute();
还可以使用以下代码在AsynTask
类中添加onpostecute()
方法
protected void onPostExecute(String result) {
myDateTextView.setText(result);
}
请记住从
doInbackGround()
中删除myDateTextView.setText()
,这将导致异常您需要在onPostExecute()
方法中更新UI
protected void onPostExecute(String result) {
myDateTextView.setText(result);
}
您可以在onCreate()
上调用AsyncTask
,就像
new currentDateTime().execute();
在onCreate()中这样调用异步任务 在调用onCreate()中初始化文本视图之前
myDateTextView=(TextView)findViewById(R.id.myDateTextView)代码>
更改公共类currentDateTime扩展异步任务
到
您不必使用asyncTask。您可以尝试这样做:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
Calendar calendar = Calendar.getInstance();
DateFormat format = new SimpleDateFormat("EEEE, MMMM dd, YYYY");
TextView myDateTextView = (TextView)findViewById(R.id.myDateTextView);
String currentDateTimeString = format.format(calendar.getTime());
myDateTextView.setText(currentDateTimeString);
}
你也做错了什么。变量名为“Format”,这是错误的,因为这是一个类名。您应该将其更改为“格式”
到
我尝试了你的方法,但我收到错误“calendar无法解析”,即使在导入java.util.calendar
@Mikitz06对不起,我错了,我编辑了答案,add calendar calendar=calendar.getInstance();到你的代码,不起作用?发生了什么事?如果它正在崩溃,请张贴日志。并尝试移动TextView myDateTextView=(TextView)findViewById(R.id.myDateTextView)代码>在setContentView(R.layout.your_layout)
实现我的代码并放置logcat之后,我就能够得到情况。请参见编辑2了解实现的logcat
new currentDateTime().execute();
new currentDateTime().execute();
public class currentDateTime extends AsyncTask<Void, Void, String> // as you're not passing anything while calling AsyncTask.
protected void onPostExecute(String result) {
myDateTextView.setText(result);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
Calendar calendar = Calendar.getInstance();
DateFormat format = new SimpleDateFormat("EEEE, MMMM dd, YYYY");
TextView myDateTextView = (TextView)findViewById(R.id.myDateTextView);
String currentDateTimeString = format.format(calendar.getTime());
myDateTextView.setText(currentDateTimeString);
}
String Format = "EEEE, MMMM dd, YYYY";
String format = "EEEE, MMMM dd, YYYY";