小编jid*_*vah的帖子

从后堆栈中删除片段

当平板电脑被纵向握持时,我在活动中有3个片段.但是在景观中我只有2个这样的片段.我遇到的问题是当从纵向到横向时,活动正在创建第3个片段.我收到并收到错误,因为无法创建此片段.

我已经知道这个片段正在创建,因为它位于后栈中.

我试图通过使用删除onDestroy方法中的片段

FragmentTransaction f = fragmentManager.beginTransaction();
f.remove(mf);
f.commit();
Run Code Online (Sandbox Code Playgroud)

但是我得到一个错误,说我不能在onSaveInstanceState之后使用这个函数

将这个片段从后栈中取出的正确方法是什么?

更新

我应该补充一点,我遇到问题的片段是来自这个库的mapFragment

https://github.com/petedoyle/android-support-v4-googlemaps

我使用它的方式就是这样

mf = MapFragment.newInstance(1, true);

ft = fragmentManager.beginTransaction();
ft.replace(R.id.mapContainer, mf);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.addToBackStack("map");
ft.commit();
Run Code Online (Sandbox Code Playgroud)

android android-fragments

59
推荐指数
2
解决办法
11万
查看次数

如何在Android中解析JSON对象

我在从JSON对象中提取值时遇到一些问题.这是我的代码

try {
    JSONObject json = new JSONObject(result);
    JSONObject json2 = json.getJSONObject("results");
    test = json2.getString("name");     
} catch (JSONException e) {
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

test被宣布为String.当代码运行时,它正在显示null.如果我json2在调试模式下悬停,我可以看到对象中的所有值和名称.

我也试过了

test = json2.length();
Run Code Online (Sandbox Code Playgroud)

这回来了test = 0.即使我将鼠标悬停在json2对象上,我也可以读取对象中的值.

这是我将使用的JSON字符串的示例.

{
    "caller":"getPoiById",
    "results":
    {
        "indexForPhone":0,
        "indexForEmail":"NULL",
        "indexForHomePage":"NULL",
        "indexForComment":"NULL",
        "phone":"05137-930 68",
        "cleanPhone":"0513793068",
        "internetAccess":"2",
        "overnightStay":"2",
        "wasteDisposal":"2",
        "toilet":"2",
        "electricity":"2",
        "cran":"2",
        "slipway":"2",
        "camping":"2",
        "freshWater":"2",
        "fieldNamesWithValue":["phone"],
        "fieldNameTranslations": ["Telefon"],
        "id":"1470",
        "name":"Marina Rasche Werft GmbH & Co. KG",
        "latitude":"52.3956107286487",
        "longitude":"9.56583023071289"
    }
}
Run Code Online (Sandbox Code Playgroud)

android json

25
推荐指数
4
解决办法
12万
查看次数

替代Google商家信息自动填充功能

我正在开发的项目使用google places autocomplete来帮助用户输入POI和地址.这工作正常但我们想要按照我们在多边形中定义的特定区域来过滤自动完成结果.

由于谷歌没有在响应中发送纬度和经度,因此无法使用他们的api.当然,我们可以发送第二个请求来检索这些数据,但它似乎不是一个很好的解决方案,无论是性能还是数据使用方面.

我查看了foursquare搜索API.这工作正常,但对地址的支持很差,api主要基于POI.

有没有替代谷歌的地方返回地址和POI?

google-maps google-api geolocation geo google-places-api

9
推荐指数
2
解决办法
4488
查看次数

与Autovalue的Proguard

我刚开始使用AutoValue但我无法使用proguard.我有大约6000多个警告,看起来像这样

警告:autovalue.shaded.com.google.common.auto.common.MoreElements $ 1:找不到超类或接口javax.lang.model.util.SimpleElementVisitor6

实际错误显示了......

错误:任务':transformClassesAndResourcesWithProguardForDebug'的执行失败.java.io.IOException:请先纠正上面的警告.

我该如何解决这个问题?

android proguard auto-value android-proguard

8
推荐指数
1
解决办法
2830
查看次数

服务器无法从Android手机识别Cookie

我正在尝试连接到drupal服务器.我以前能够做到这一点但是drupal开发人员现在要求我添加另一个cookie.服务器不会注册我尝试在下面发送的cookie.谁能明白为什么?

public static void maybeCreateHttpClient() {
    if (mHttpClient == null) {
        mHttpClient = new DefaultHttpClient();
        final HttpParams params = mHttpClient.getParams();
        HttpConnectionParams.setConnectionTimeout(params,
            REGISTRATION_TIMEOUT);
        HttpConnectionParams.setSoTimeout(params, REGISTRATION_TIMEOUT);
        ConnManagerParams.setTimeout(params, REGISTRATION_TIMEOUT);



        BasicCookieStore cookieStore = new BasicCookieStore();
        ClientCookie cookie = new BasicClientCookie("aml", key);

        cookieStore.addCookie(cookie);

        localContext = new BasicHttpContext();
        localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);


    }
}
Run Code Online (Sandbox Code Playgroud)

cookies android drupal

7
推荐指数
1
解决办法
622
查看次数

用Jackson反序列化泛型类型

我正在努力创建一个使用Jackson来反序列化POJO的课程.

看起来像这样......

public class DeserialiserImp<T> implements Deserialiser<T> {

        protected ObjectMapper objectMapper = new ObjectMapper();

        @Override
        public T get(String content, Class clazz) throws IOException {
            return (T) objectMapper.readValue(content, clazz);
        }

        @Override
        public List<T> getList(String content, Class clazz) throws IOException {
            return objectMapper.readValue(content, TypeFactory.collectionType(ArrayList.class, clazz));
        }

    }
Run Code Online (Sandbox Code Playgroud)

我有2个关于此实现的问题.

第一个是我将类类型传递给方法,因此objectmapper知道应该反序列化的类型.使用泛型有更好的方法吗?

同样在get方法中,我正在将一个从objectMapper返回的对象转换为T.这似乎是非常讨厌的方式,因为我必须在这里强制转换T然后我还必须从调用它的方法中转换对象类型.

我在这个项目中使用Roboguice,如果我可以通过注入更改类型然后注释我需要它返回的Generic类型的对象,这将是很好的.我读到了关于TypeLiteral并想知道它是否可以解决这个问题?

java android guice jackson roboguice

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

每种构建类型的多个Lint文件

如何配置gradle指向不同构建类型的不同lint文件?

我们希望在开发周期结束时翻译字符串.因此,我们需要忽略lint仅在调试版本上抛出的转换错误.当我们进行发布时,lint应该抛出翻译错误.以下build.gradle抛出未找到的DSL方法.

  android {

    buildTypes {

        release {
            signingConfig signingConfigs.release
        }

        debug {
            testCoverageEnabled = true
            applicationIdSuffix '.debug'
            versionNameSuffix '-DEBUG'
            signingConfig signingConfigs.debug
            lintOptions debug
        }

        beta {
            applicationIdSuffix '.beta'
            versionNameSuffix '- beta'
            signingConfig signingConfigs.debug
        }
    }

    lintOptions {

        debug {
            disable 'TypographyFractions'
        }

    }

}
Run Code Online (Sandbox Code Playgroud)

android lint gradle

6
推荐指数
0
解决办法
113
查看次数

将手势颜色设置为透明

我试图让我的应用程序不显示他们被识别的任何手势.目前我能够将识别的颜色设置为透明.这很好用.但是,如果我将无法识别的颜色设置为透明,它仍然显示为绿色.我已经尝试将其更改为其他颜色(即蓝色),这是有效的.它似乎专门针对无法识别的手势上的透明色.有人有什么想法吗?

>       GestureOverlayView
> gestureOverlayView = new
> GestureOverlayView(this);         View
> inflate =
> getLayoutInflater().inflate(R.layout.item,
> null);
>       gestureOverlayView.addView(inflate);
>       gestureOverlayView.setGestureColor(Color.TRANSPARENT);
>       gestureOverlayView.setUncertainGestureColor(Color.TRANSPARENT);
>       gestureOverlayView.addOnGesturePerformedListener(this);
>       gestureLib =
> GestureLibraries.fromRawResource(this,
> R.raw.gestures);      
>         if (!gestureLib.load()) {
>             finish();
>         }         setContentView(gestureOverlayView);
Run Code Online (Sandbox Code Playgroud)

android colors gestures

5
推荐指数
1
解决办法
3279
查看次数

应用内结算/应用内购买中项目的最大限制

我想知道 Android 和 iPhone 的应用内结算中最多可以放置多少项目。我记得好像读过3000左右,但找不到参考资料。

另外,如果 3000 是最大值,那么解决这个问题的合法方法是什么。我的应用程序将销售内容,我认为解决该问题的一种可能方法是拥有一个显示内容的中央应用程序,然后是许多不同的库,您可以在其中购买内容。这是一个可行的解决办法吗?

iphone android in-app-purchase ios in-app-billing

5
推荐指数
1
解决办法
6366
查看次数

多视图活动转换

Android Lolipop有一个api,允许在不同活动中的共享元素之间轻松转换.

活动过渡

看起来这个api不支持具有多个视图的转换.有没有办法使用相同的API?

编辑

根据@pskink的建议,我使用了不同的方法

    ActivityOptions options = ActivityOptions
            .makeSceneTransitionAnimation(this, Pair.create((View)view, "viewPager"), Pair.create((View) fab, "fab"));
    startActivity(intent, options.toBundle());
Run Code Online (Sandbox Code Playgroud)

这从ActivityA到ActivityB工作正常,但点击后退按钮会导致此堆栈跟踪

   A/OpenGLRenderer(17305): requireSurface() called but no surface set!
 A/libc(17305): Fatal signal 6 (SIGABRT), code -6 in tid 17349(RenderThread)
        Build fingerprint: 'google/hammerhead/hammerhead:5.0/LRX21O/1570415:user/release-keys'
        Revision: '11'
        ABI: 'arm'
        pid: 3364, tid: 3414, name: RenderThread  >>> com.example.package <<<
        signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
        Abort message: 'requireSurface() called but no surface set!'
            r0 00000000  r1 00000d56  r2 00000006  r3 00000000
            r4 9e9b5db8  r5 …
Run Code Online (Sandbox Code Playgroud)

android activity-transition shared-element-transition

5
推荐指数
0
解决办法
1962
查看次数