小编Fel*_*lix的帖子

JSON日期到Java日期?

我无处可寻.我从返回标准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:22Z
  • 2010-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)

啊!

java json

33
推荐指数
3
解决办法
10万
查看次数

Android:在模拟器中模拟WiFi?

我想从我的应用程序检查设备是否具有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连接?

testing android device-emulation wifi android-emulator

32
推荐指数
3
解决办法
6万
查看次数

如何知道同步完成的时间?

我已经实现了一个同步适配器,我想在我的活动中完成回调.我尝试过使用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)

android sync callback

31
推荐指数
3
解决办法
1万
查看次数

Android:无法想象如何使用setImeActionLabel

我想要做的是更改虚拟键盘中显示的默认"完成"标签.这是我没有运气的尝试:

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)

我对如何在此刻更改该按钮上的标签毫无头绪.

java android android-edittext

26
推荐指数
1
解决办法
2万
查看次数

为什么溢出:隐藏有意想不到的副作用,高度增长,以包含浮动元素?

这个小提琴最好用以下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导致外部元素在高度上增长,包含两个浮动元素?

css overflow css-float

26
推荐指数
1
解决办法
5112
查看次数

在android布局中不重复的背景图像

我已经使用以下代码在后台重复图像,但它无法正常工作可以帮助吗?

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)

它显示出相同的小图像.它不重复......

android

23
推荐指数
3
解决办法
2万
查看次数

当AsyncTasks运行时,处理屏幕方向更改

我被这一段时间所困扰了.当我单独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实例中调用方法.

android android-asynctask

20
推荐指数
1
解决办法
9966
查看次数

以编程方式获取屏幕大小?

我想确定当前设备的代码中是否有小型,中型,大型或Xlarge屏幕.我在SDK文档中找不到任何可以帮助我获取该信息的内容.我所看到的所有方法/类只提供绝对值(即屏幕大小,以像素为单位,屏幕密度等).

有没有办法告诉我在代码中运行的是什么类型的屏幕?

android

19
推荐指数
4
解决办法
5800
查看次数

ListView没有刷新已经可见的项目

我正在使用显示联系人列表(姓名+图片)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)

multithreading android android-listview

17
推荐指数
1
解决办法
1万
查看次数

如何获得屏幕的物理尺寸(即以英寸为单位)?

我试图弄清楚如何通过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.

还有什么可以尝试的吗?

javascript dimension

16
推荐指数
1
解决办法
1万
查看次数