我无处可寻.我从返回标准JSON日期的API中获取一些JSON.您可以通过在JavaScript控制台中运行此代码来查看格式:
> new Date().toJSON();
"2010-10-27T11:58:22.973Z"
Run Code Online (Sandbox Code Playgroud)
好吧,实际上,我正在使用的API不是返回毫秒部分,有时它会返回一个时区而不是Z,因此日期可能看起来像这些中的任何一个:
2010-10-27T11:58:22Z2010-10-27T11:58:22+03:00解析这些日期有点麻烦.有没有办法解析这些日期,使用org.json?
我目前的解决方案是:
public static Date parseDateTime(String dateString) {
if (dateString == null) return null;
DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ");
if (dateString.contains("T")) dateString = dateString.replace('T', ' ');
if (dateString.contains("Z")) dateString = dateString.replace("Z", "+0000");
else
dateString = dateString.substring(0, dateString.lastIndexOf(':')) + dateString.substring(dateString.lastIndexOf(':')+1);
try {
return fmt.parse(dateString);
}
catch (ParseException e) {
Log.e(Const.TAG, "Could not parse datetime: " + dateString);
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
啊!
我想从我的应用程序检查设备是否具有WiFi连接,但为了做到这一点,我必须首先找到一种方法来在模拟器中获得"WiFi".只需进入设置 - >无线控制 - > Wifi说无法启动Wi-Fi,同时logcat说:
E/WifiService( 566): Failed to load Wi-Fi driver.
D/SettingsWifiEnabler( 695): Received wifi state changed from Unknown to Enabling
D/SettingsWifiEnabler( 695): Received wifi state changed from Enabling to Unknown
Run Code Online (Sandbox Code Playgroud)
如何在模拟器中模拟WiFi连接?
我已经实现了一个同步适配器,我想在我的活动中完成回调.我尝试过使用ContentResolver.addStatusChangeListener,但是当同步处于暂挂/活动状态时,我只会收到回调.以下是我的活动中的一些相关代码:
@Override
protected void onResume() {
super.onResume();
final int mask = ContentResolver.SYNC_OBSERVER_TYPE_ACTIVE | ContentResolver.SYNC_OBSERVER_TYPE_PENDING;
syncObserverHandle = ContentResolver.addStatusChangeListener(mask, syncStatusObserver);
}
@Override
protected void onPause() {
super.onPause();
if (syncObserverHandle != null) {
ContentResolver.removeStatusChangeListener(syncObserverHandle);
syncObserverHandle = null;
}
}
private SyncStatusObserver syncStatusObserver = new SyncStatusObserver() {
@Override
public void onStatusChanged(int which) {
AccountManager am = AccountManager.get(TodosActivity.this);
Account a = am.getAccountsByType(Const.ACCOUNT_TYPE)[0];
Log.d(Const.TAG, "Sync status changed: " + which);
if (!ContentResolver.isSyncActive(a, DataProvider.AUTHORITY) &&
!ContentResolver.isSyncPending(a, DataProvider.AUTHORITY)) {
Log.d(Const.TAG, "Sync finished, should refresh nao!!");
} …Run Code Online (Sandbox Code Playgroud) 我想要做的是更改虚拟键盘中显示的默认"完成"标签.这是我没有运气的尝试:
mSearchInput.setImeOptions(EditorInfo.IME_ACTION_DONE);
mSearchInput.setImeActionLabel(getString(R.string.search_action_label), EditorInfo.IME_ACTION_DONE);
Run Code Online (Sandbox Code Playgroud)
我很能干,但是,处理该按钮的点击,这一点:
mSearchInput.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE) {
performSearch();
return true;
}
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
我对如何在此刻更改该按钮上的标签毫无头绪.
这个小提琴最好用以下HTML 解释这个问题:
<div class="outer">
<div class="inner-left"></div>
<div class="inner-right"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
.outer {
width: 100px;
border: solid 5px #000;
}
.inner-left {
float: left;
height: 200px;
width: 50px;
background: #f00;
}
.inner-right {
float: right;
height: 200px;
width: 50px;
background: #0f0;
}
Run Code Online (Sandbox Code Playgroud)
基本上,我想知道为什么overflow: hidden导致外部元素在高度上增长,包含两个浮动元素?
我已经使用以下代码在后台重复图像,但它无法正常工作可以帮助吗?
Layout.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/grass_bg"
>
Run Code Online (Sandbox Code Playgroud)
drawable中的grass_bg.xml看起来像这样
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/grass_small"
android:tileMode="repeat"/>
Run Code Online (Sandbox Code Playgroud)
它显示出相同的小图像.它不重复......
我被这一段时间所困扰了.当我单独Thread/ AsyncTask正在运行时,如何正确处理屏幕方向更改?目前,我有
android:configChanges="orientation|keyboard|keyboardHidden"
Run Code Online (Sandbox Code Playgroud)
在我的AndroidManifest.xml,但这并不是真的鼓励:
注意:应避免使用此属性,并仅将其用作最后的手段.有关如何通过配置更改正确处理重新启动的详细信息,请阅读处理运行时更改.
此外,在2.3仿真器中,它在切换到landscape,但切换回portrait失败时起作用.
现在,我使用的原因configChanges是因为当用户切换方向时,我可能AsyncTask正在运行,做一些网络流量,我不希望它停止.
有没有其他方法可以做到这一点,还是有办法修复2.3切换回肖像?
我知道onRetainNonConfigurationInstance,但我不确定"保存" AsyncTask实例是一个好主意,主要是因为扩展的类AsyncTask不是静态的(所以它与之相关Activity) - 它需要是,因为在onPostExecute()它从Activity实例中调用方法.
我想确定当前设备的代码中是否有小型,中型,大型或Xlarge屏幕.我在SDK文档中找不到任何可以帮助我获取该信息的内容.我所看到的所有方法/类只提供绝对值(即屏幕大小,以像素为单位,屏幕密度等).
有没有办法告诉我在代码中运行的是什么类型的屏幕?
我正在使用显示联系人列表(姓名+图片)ListView.为了使初始加载速度快,我只首先加载名称,然后推迟图片加载.现在,每当我的后台线程完成加载图片时,它会调度我的适配器notifyDataSetChanged()在UI线程上调用.不幸的是,当发生这种情况时,ListView不会重新呈现(即调用getView())已经在屏幕上的项目.因此,用户不会看到新加载的图片,除非他们滚动并返回到同一组项目,以便视图得到回收.一些相关的代码:
private final Map<Long, Bitmap> avatars = new HashMap<Long, Bitmap>();
// this is called *on the UI thread* by the background thread
@Override
public void onAvatarLoaded(long contactId, Bitmap avatar) {
avatars.put(requestCode, avatar);
notifyDataSetChanged();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// snip...
final Bitmap avatar = avatars.get(contact.id);
if (avatar != null) {
tag.avatar.setImageBitmap(avatar);
tag.avatar.setVisibility(View.VISIBLE);
tag.defaultAvatar.setVisibility(View.GONE);
} else {
tag.avatar.setVisibility(View.GONE);
tag.defaultAvatar.setVisibility(View.VISIBLE);
if (!avatars.containsKey(contact.id)) {
avatars.put(contact.id, null);
// schedule the …Run Code Online (Sandbox Code Playgroud) 我试图弄清楚如何通过Javascript获取设备屏幕的物理尺寸.到目前为止,我的结论是,它目前是不可能的,但我希望有人可以证明我错了:).
到目前为止,我已经尝试通过查找设备的DPI来获取此信息,但似乎没有办法在这里获得正确的值,因为我测试的所有设备(一些HDPI和XHDPI Android设备,iPhone4S,iPad 2和iPad 3)报告96DPI.
获得我尝试过的DPI的第一种方法是你可以在互联网上随处找到的方法:div用CSS宽度创建一个1in,得到它clientWidth或者offsetWidth你的DPI.不起作用,所有设备报告96.
第二种方法是使用分辨率媒体查询,类似于:
for (var i=90; i < 400; i++) {
if (matchMedia('(resolution: ' + i + 'dpi)').matches) {
return i;
}
}
Run Code Online (Sandbox Code Playgroud)
我认为这是一个聪明的解决方案,但不幸的是,它也会返回96.
还有什么可以尝试的吗?