小编ala*_*how的帖子


android - listview按位置获取项目视图

我有自定义适配器(基本适配器)的listview.我想按位置从listview获取视图.我试过了mListView.getChildAt(position),但它没有用.如何按位置获取项目视图?

android android-listview android-adapter android-view

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

proguard - 在proguard/minify之后,AppCompat不支持当前的主题功能

在构建应用程序(使用minifyEnabled为true)之后,我已经从v22.2.1更新了支持库到v23.0.0我有"AppCompat不支持当前主题功能"的例外情况:

08-23 05:46:10.168 19437 19437 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{tm.alashow.dotjpg/tm.alashow.dotjpg.ui.activity.MainActivity}: java.lang.IllegalArgumentException: AppCompat does not support the current theme features
08-23 05:46:10.168 19437 19437 E AndroidRuntime:    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2417)
08-23 05:46:10.168 19437 19437 E AndroidRuntime:    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2477)
08-23 05:46:10.168 19437 19437 E AndroidRuntime:    at android.app.ActivityThread.-wrap11(ActivityThread.java)
08-23 05:46:10.168 19437 19437 E AndroidRuntime:    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1345)
Run Code Online (Sandbox Code Playgroud)

调试应用程序或禁用proguard(minifyEnabled false)时,异常不会抛出.仅在启用proguard时才会抛出.

主题:

<style name="Theme.App" parent="@style/Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/primary</item>
        <item name="colorPrimaryDark">@color/primary_dark</item>
        ...
</style>
Run Code Online (Sandbox Code Playgroud)

Proguard文件:

-dontwarn android.support.v7.**
-keep class android.support.v7.** { *; }
-keep interface android.support.v7.** { …
Run Code Online (Sandbox Code Playgroud)

android proguard android-appcompat android-support-library

13
推荐指数
1
解决办法
1231
查看次数

构建apk后的错误

生成签名的apk后,操作栏视图(共享操作提供程序和searchview)崩溃.当我从Android工作室调试应用程序时它正在工作,但当我生成签名的apk并安装应用程序到设备我得到这样的错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.SearchView.setQueryHint(java.lang.CharSequence)' on a null object reference
            at tm.veriloft.ertir.ui.SearchActivity.onCreateOptionsMenu(Unknown Source)
            at android.app.Activity.onCreatePanelMenu(Activity.java:2820)
            at android.support.v4.app.o.onCreatePanelMenu(Unknown Source)
            at android.support.v7.app.e.a(Unknown Source)
            at android.support.v7.app.g.a(Unknown Source)
            at android.support.v7.widget.as.a(Unknown Source)
            at android.support.v7.internal.a.a.j(Unknown Source)
            at android.support.v7.internal.a.b.run(Unknown Source)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Run Code Online (Sandbox Code Playgroud)

要么

 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.ah.a(android.content.Intent)' on a null object reference
            at tm.veriloft.ertir.ui.BlogViewActivity.onCreateOptionsMenu(Unknown Source)
            at android.app.Activity.onCreatePanelMenu(Activity.java:2820)
            at android.support.v4.app.o.onCreatePanelMenu(Unknown Source)
            at android.support.v7.app.e.a(Unknown Source)
            at …
Run Code Online (Sandbox Code Playgroud)

android android-actionbar-compat android-toolbar

8
推荐指数
2
解决办法
1970
查看次数

multidex - NoClassDefFoundError 启用了 multidex

我的应用程序在 21 之前崩溃并java.lang.NoClassDefFoundError app.module.SomeClass出现错误。

我已经启用了 Multidex:

构建.gradle:

android {
    defaultConfig {
        ...
        multiDexEnabled true
    }
}

dependencies {
   ...
   implementation "androidx.multidex:multidex:2.0.1"
}
Run Code Online (Sandbox Code Playgroud)

我的应用程序类:

class App : DaggerApplication() {
    ...
    override fun attachBaseContext(base: Context) {
        super.attachBaseContext(base)
        MultiDex.install(this)
    }
Run Code Online (Sandbox Code Playgroud)

在阅读了主 DEX 文件中所需的声明类之后,我创建了multidex-config.pro文件以包含app.module.**在主 DEX 文件中:

-keep class app.module.** { *; }
Run Code Online (Sandbox Code Playgroud)

并在 build.gradle 中注册:

android {
  buildTypes {
    debug {
      ...
      multiDexKeepProguard file('multidex-config.pro')
    }
}
Run Code Online (Sandbox Code Playgroud)

我通过检查build/intermediates/legacy_multidex_main_dex_list/debug/mainDexList.txt和分析调试 apk(检查是否classes.dex包含app.module.SomeClass)来确认它。

但我仍然收到java.lang.NoClassDefFoundError …

android kotlin android-multidex

8
推荐指数
2
解决办法
2863
查看次数

如何使用水平 ViewPager2/RecyclerView 作为内容使 BottomSheetDialog 可关闭?

我有一个BottomSheetDialogFragmentViewPager2(水平方向)为主要内容。

工作表不会像对RecyclerView(垂直方向)那样响应垂直滚动(用于解散)。

我尝试用ViewPager2水平方向替换RecyclerView- 相同的行为,所以它可能是相同的问题。

我的底部工作表片段的简化布局:

<androidx.coordinatorlayout.widget.CoordinatorLayout>
   <androidx.viewpager2.widget.ViewPager2/>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

android android-coordinatorlayout bottom-sheet

8
推荐指数
0
解决办法
373
查看次数

在浏览器中打开链接而不是默认应用

我正在为站点创建应用程序,并创建了链接重定向器活动(仅适用于 http://*.domain.com url),如果 url 支持,则重定向到活动。如果不支持应该在浏览器中打开链接。它工作正常,但是当用户设置应用程序默认应用程序时,单击活动选择器中的始终按钮,应用程序进入循环。活动打开,检查链​​接支持,如果不支持带Intent.ACTION_VIEW标志的打开意图,则活动再次打开。

问题: 如何在浏览器中打开链接(可能是默认值),而不是我的应用程序,为 url 设置默认值。

我尝试在浏览器中打开 url 的方法:

private void unsupportedLink() {
    Toast.makeText(this, R.string.unsupported_link, Toast.LENGTH_LONG).show();
    Intent openUrl = new Intent(Intent.ACTION_VIEW, Uri.parse(url.toString()));
    startActivity(openUrl);
    finish();
}
Run Code Online (Sandbox Code Playgroud)

清单中的活动:

<activity
            android:name=".util.UrlHandler"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.Translucent.NoTitleBar">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />


                <data
                    android:scheme="http"
                    android:pathPattern="/.*"
                    android:host="m.domain.com" />
                <data
                    android:scheme="http"
                    android:pathPattern="/.*"
                    android:host="www.domain.com" />
            </intent-filter>
        </activity>
Run Code Online (Sandbox Code Playgroud)

android android-intent

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