小编Jon*_*ryl的帖子

何时可以在OnMapReadyCallback的onMapReady之后调用GoogleMap.moveCamera?

目前的Android Google Maps API要求您先mapFragment.getMapAsync使用a 调用OnMapReadyCallback才能访问GoogleMap.我假设一旦你有了GoogleMap它就可以安全地打电话,moveCamera()但我看到崩溃报告,IllegalStateException其中说Map size can't be 0. Most likely, layout has not yet occured for the map view.

所以我尝试添加一个ViewTreeObserver.OnPreDrawListener,并将moveCamera()调用移动到该onPreDraw方法,因为该文档说"在这一点上,树中的所有视图都已经过测量并给出了一个框架".但我仍然看到一些同样问题的崩溃报告.我找不到任何相关的文档 - 像CameraUpdateFactory.newLatLngBounds崩溃的诸如moveCamera之类的问题但它们在getMapAsyncAPI 之前已经过时,所以它们没有多大帮助.

android google-maps

14
推荐指数
2
解决办法
4101
查看次数

Android StrictMode Throwable:未调用显式终止方法'end'

我看到StrictMode失败了,我看不出我正在做什么有什么问题.失败的是:

java.lang.Throwable: Explicit termination method 'end' not called
    E/StrictMode(26875):    at dalvik.system.CloseGuard.open(CloseGuard.java:184)
    E/StrictMode(26875):    at java.util.zip.Inflater.<init>(Inflater.java:82)
    E/StrictMode(26875):    at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:96)
    E/StrictMode(26875):    at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:81)
    E/StrictMode(26875):    at libcore.net.http.HttpEngine.initContentStream(HttpEngine.java:528)
    E/StrictMode(26875):    at libcore.net.http.HttpEngine.readResponse(HttpEngine.java:836)
    E/StrictMode(26875):    at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:274)
    E/StrictMode(26875):    at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:486)
    E/StrictMode(26875):    at com.mycompany.MyClass.sendJson(MyClass.java:267)
Run Code Online (Sandbox Code Playgroud)

我配置StrictMode:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
    StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
              .detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog()
                    .penaltyDeath().build());
}
Run Code Online (Sandbox Code Playgroud)

代码如下所示:

HttpURLConnection connection = null;
OutputStream outputStream = null;
InputStream in = null;

try {
        connection = (HttpURLConnection)new URL("http://our.server/some/path").openConnection();

        connection.setRequestProperty("Accept", "application/json");
        connection
                .setRequestProperty("Content-Type", "application/json; charset=UTF-8");
        connection.setDoOutput(true);

        outputStream = connection.getOutputStream();

        String content = "{\"some\":\"json data\"}"; …
Run Code Online (Sandbox Code Playgroud)

android

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

在ActionBar上显示SearchView的软键盘

我们在ActionBar上有一个SearchView,它被设置为非图标化.由于我们在视图中没有任何内容直到用户输入要搜索的内容,因此将SearchView初始焦点放在一边是有意义的,并确保软键盘显示为用户输入文本做好准备 - 否则他们'我总是必须先在SearchView中点击.

我可以通过调用来给予SearchView焦点

searchView.requestFocus();
Run Code Online (Sandbox Code Playgroud)

但我不能让软键盘出现.在我们的另一个片段中,我有一个我们想要聚焦的EditText我可以通过调用让软键盘出现在那里

InputMethodManager mgr = (InputMethodManager)getActivity().getSystemService(
            Context.INPUT_METHOD_SERVICE);
mgr.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
Run Code Online (Sandbox Code Playgroud)

但这只是在SearchView上不起作用.必须有可能让它发挥作用.

android actionbarsherlock

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

清除Android Fragment后台堆栈没有弹出?

我们有一个包含SlidingMenu(https://github.com/jfeinstein10/SlidingMenu)的Activity,其中有三个选项,我们称之为A,B1,C1.这些对应于我们在活动中显示的片段.当您从SlidingMenu中选择其他选项时,我通过FragmentManager将新片段替换为新片段.

从片段B1你可以去另外两个,让我们称他们为B2和B3.在这里,我们希望Back键从B2 - > B1或B3 - > B1,所以我调用transaction.addToBackStack(null).如果我们在B2或B3上从SlidingMenu中选择一个选项,我们想要清除后面的堆栈,所以我使用这个问题中建议的代码使用调用popBackStack()的片段清除堆栈直到它清楚.

到现在为止还挺好.

从Fragment C1你可以去Fragment C2.由于C1/C2更像是我使用的主/细节设计

fragmentTransaction.setCustomAnimations(R.animator.slide_in_from_right,
    R.animator.slide_out_to_left, R.animator.slide_in_from_left,
    R.animator.slide_out_to_right);
Run Code Online (Sandbox Code Playgroud)

添加幻灯片动画,当C2从右侧滑入时,C1向左滑动,反之亦然.在C2上按回车键将我们带回C1,带有反向动画,一切都很好.

如果你从SlidingMenu中选择A或B1,我们popBackStack()从后面的堆栈中删除C1,那么它会向右滑动C2,这看起来很奇怪.我想要做的是清除后台堆栈而不运行动画,但我找不到办法做到这一点.我试过调用popBackStackImmediate(),但这似乎没有任何区别.

作为替代方案,我想我可以完全避免调用addToBackStack,而是通过Activity.onBackPressed()手动处理用户按Back键,但也许有一个我看不到的解决方案?

android android-fragments slidingmenu

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

使用proguard在Android上使用ORMLite崩溃

我们在Android应用中使用ORMLite.它工作正常,除非我们尝试在打开proguard的情况下进行构建.

我已经阅读了各种类似的帖子,到目前为止我已经进入了我的proguard-project.txt

-keep class com.j256.** {
   *;
}
Run Code Online (Sandbox Code Playgroud)

如以下讨论中所述http://sourceforge.net/p/proguard/discussion/182456/thread/6765bb69

而且我有

-keepclassmembers class * { 
  public <init>(android.content.Context);
  public <init>(android.app.Activity,int);
}
Run Code Online (Sandbox Code Playgroud)

正如另一个在Android上使用OrmLite的 stackoverflow问题Proguard所建议的那样

但它仍然无法正常工作.如果我添加,我可以让它运行

-dontobfuscate
Run Code Online (Sandbox Code Playgroud)

但这有点遗漏了首先使用proguard的观点.

当我跑步时,我得到一个

IllegalStateException: Could not find OpenHelperClass because none of the generic
parameters of class class <our.package.name>.LaunchActivity extends
OrmLiteSqliteOpenHelper.  You should use getHelper(Context, Class) instead.
Run Code Online (Sandbox Code Playgroud)

哪里

public class LaunchActivity extends OrmLiteBaseActivity<DatabaseHelper>
Run Code Online (Sandbox Code Playgroud)

public class DatabaseHelper extends OrmLiteSqliteOpenHelper
Run Code Online (Sandbox Code Playgroud)

我已经添加

-keep public class * extends com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper

-keep public class <our.package.name>.LaunchActivity
Run Code Online (Sandbox Code Playgroud)

但仍然没有运气.这个问题似乎之前已被问过(OrmLite和proguard混淆的问题),但我希望 …

obfuscation android proguard ormlite

6
推荐指数
1
解决办法
2559
查看次数

用什么来代替RetrofitError.Kind.NETWORK用于新的Retrofit 2 API?

在Retrofit 1.9.x中,有一个RetrofitError.Kind.NETWORK可以让您轻松确定故障是否是由网络错误引起的.在新的2.0 API我们不再RetrofitError有一个简单的等价物我们可以用来测试是否Response由于网络失败?

retrofit

6
推荐指数
1
解决办法
1079
查看次数