小编Inf*_*0re的帖子

如何获取在代码中的attrs.xml中创建的枚举

我创建了一个自定义视图(在此处找到),其中包含enum类型的declare-styleable属性.在xml中,我现在可以为自定义属性选择一个枚举条目.现在我想创建一个以编程方式设置此值的方法,但我无法访问枚举.

attr.xml

<declare-styleable name="IconView">
    <attr name="icon" format="enum">
        <enum name="enum_name_one" value="0"/>
        ....
        <enum name="enum_name_n" value="666"/>
   </attr>
</declare-styleable>     
Run Code Online (Sandbox Code Playgroud)

layout.xml

<com.xyz.views.IconView
    android:id="@+id/heart_icon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:icon="enum_name_x"/>
Run Code Online (Sandbox Code Playgroud)

我需要的是:mCustomView.setIcon(R.id.enum_name_x); 但是我找不到枚举,或者我甚至不知道如何获得枚举或枚举的名称.

enums android custom-view android-custom-view attr

95
推荐指数
5
解决办法
4万
查看次数

未调用AppCompat v7工具栏onOptionsItemSelected

我从原来的ActionBar更改为AppCompat工具栏和setSupportActionBar(工具栏).当我使用getSupportActionBar()和setDisplayHomeAsUpEnabled(true)作为后退箭头时,单击从不调用onOptionsItemSelected或任何其他侦听器方法.

我必须为它实现一些特殊的监听器吗?一切都工作得很好.

编辑:初始化ActionBar:

mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
mActionBar = getSupportActionBar();
mActionBar.setHomeButtonEnabled(true);
Run Code Online (Sandbox Code Playgroud)

在用Fragment替换内容后,我这样做:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
mDrawerToggle.setDrawerIndicatorEnabled(false);
mActionBar.setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)

android toolbar android-appcompat android-actionbar android-5.0-lollipop

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

打开失败:EBUSY(设备或资源繁忙)

我的应用程序中有一个奇怪的错误.

在我的应用程序中,可以下载zipFile,读取内容,并删除它.它究竟是什么并不重要.

问题:仅在Motorola Xoom(版本4.0.4)上我可以下载文件,解压缩,我可以读取数据,我可以删除所有内容.但是,如果我再次尝试下载文件并解压缩文件并将文件复制到SD卡,则会因错误EBUSY(设备或资源繁忙)而崩溃.

  1. 为什么它只是第一次工作?
  2. 什么意思错误?
  3. 为什么我只在Xoom上出现此错误?

我找不到任何解决方案.在所有其他设备上它工作正常,没有错误或问题.

logcat的:

07-18 12:27:46.774: E/PrepareMagTask(10057): IOException
07-18 12:27:46.774: E/PrepareMagTask(10057): java.io.FileNotFoundException: /mnt/sdcard/Android/data/com.xxxxxx.android/files/content/23760/emag.db: open failed: EBUSY (Device or resource busy)
07-18 12:27:46.774: E/PrepareMagTask(10057):    at libcore.io.IoBridge.open(IoBridge.java:406)
07-18 12:27:46.774: E/PrepareMagTask(10057):    at java.io.FileOutputStream.<init>(FileOutputStream.java:88)
07-18 12:27:46.774: E/PrepareMagTask(10057):    at java.io.FileOutputStream.<init>(FileOutputStream.java:73)
07-18 12:27:46.774: E/PrepareMagTask(10057):    at com.xxxxx.android.util.io.ZipHelper.uncompressEntry(ZipHelper.java:35)
07-18 12:27:46.774: E/PrepareMagTask(10057):    at com.xxxxx.android.task.PrepareMagTask.doInBackground(PrepareMagTask.java:271)
07-18 12:27:46.774: E/PrepareMagTask(10057):    at com.xxxxx.android.task.PrepareMagTask.doInBackground(PrepareMagTask.java:1)
07-18 12:27:46.774: E/PrepareMagTask(10057):    at android.os.AsyncTask$2.call(AsyncTask.java:264)
07-18 12:27:46.774: E/PrepareMagTask(10057):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
07-18 12:27:46.774: E/PrepareMagTask(10057):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
07-18 12:27:46.774: E/PrepareMagTask(10057):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
07-18 12:27:46.774: E/PrepareMagTask(10057):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) …
Run Code Online (Sandbox Code Playgroud)

android inputstream unzip

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

ViewPager + FragmentStatePagerAdapter +方向更改

我有一点问题:我有一些带有一些Pages的ViewPager,我使用FragmentStatePagerAdapter来处理数据.在肖像中,我有例如20页用于ViewPager,在景观中我只有10页用于ViewPager.因此,在方向更改时,我创建了一个具有不同数据的新适配器.

这里有一个小解释原因:我在肖像中展示一幅图像,在风景中展示两幅图像,但总是全部都在计算中 如果我要显示10张照片,我有10张照片,5张照片(总是两张).

但现在我有一个奇怪的错误:当我在索引5上的Landscape并转动设备时,ViewPager的当前页面设置为10.如果我再将它再次转回我在第5页.如果我现在将ViewPage刷到页面10从不调用适配器的methode getItem,并且ViewPage向我显示一个肖像图片而不是两个用于横向图片.怎么会发生这种情况?适配器或ViewPager中是否有缓存?在Activity的onCreate中,一切都是新创建的,适配器以及ViewPager的数据(只是带路径的字符串).所以任何想法如何解决这个真正可怕的"功能"?

这是一些代码:

的onCreate:

    mViewPagerAdapter = new ReaderPageViewAdapter(getSupportFragmentManager(), getBaseContext(), mCurrentDocument.mPages, getResources()
                .getConfiguration().orientation);
    mPageReader = (ReaderViewPager) findViewById(R.id.pager);
    mPageReader.setAdapter(mViewPagerAdapter);
Run Code Online (Sandbox Code Playgroud)

adapter getItem:

    public Fragment getItem(final int index) {
        final PageInfo pageInfo = mPages.get(index);
        final PageFragment pageFragment = (PageFragment) PageFragment
                .instantiate(mContext, pageInfo.mClss.getName(), pageInfo.mArgs);
        return pageFragment;
    }
Run Code Online (Sandbox Code Playgroud)

如果你需要更多东西,请告诉我.谢谢

android caching adapter fragment android-viewpager

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

在android java类中使用Kotlin扩展

是否可以在android java类中使用kotlin扩展?例:

fun String.getSomething(): String {
    return "something"
}
Run Code Online (Sandbox Code Playgroud)

然后在Java中使用它:

String someString = "blabla";
someString.getSomething();
Run Code Online (Sandbox Code Playgroud)

这可能吗?

android kotlin kotlin-extension

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

通过应用内购买删除广告

我正在寻找关于如何通过应用内购买删除我的应用程序中的广告的教程或解释?

我会在我的应用中添加一些广告,但我也希望用户可以在支付一点捐款时停用广告.你知道一个网站或教程,我可以找到一步一步解释如何做到这一点?

或者我是否需要发布我的应用程序的两个版本?一个有广告,一个没有广告付费?

android ads in-app-purchase admob

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

Google地图会移除标记路线上下文菜单

我使用Android Studio的Google地图模板开始了一个新项目,只是在地图上添加了一个标记.

LatLng location = new LatLng(lat, lng);
Marker marker = mMap.addMarker(new MarkerOptions()
            .position(location)
            .icon(BitmapDescriptorFactory.fromResource(R.drawable.marker)));
Run Code Online (Sandbox Code Playgroud)

当我点击Marker时,会出现一个带有Google Maps图标的小菜单:

右下方的菜单

我怎么能摆脱这个东西?我找不到任何我甚至不知道怎么称呼它,但我真的需要摆脱它.

maps android menu marker google-maps-android-api-2

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

即使没有互联网访问,强制Android 6.x Marshmallow使用WiFi连接

我正在使用应用程序,我需要与我的路由器通信.我需要从他的路由器下载一个文件local ip.如果路由器无法访问互联网,Android会尝试通过该文件下载该文件mobile network.

WiFi即使没有互联网访问,有没有办法强制Android使用?(它是Android的一项新功能,Marshmallow可以显示WiFi但使用移动网络).该文件不能WAN仅从中访问LAN.

我可以强制它,当我禁用移动网络或打开启用WiFi的飞行模式,但这不是一个选项.我需要以编程方式强制执行此特定下载.

connection networking android wifi android-6.0-marshmallow

7
推荐指数
0
解决办法
1783
查看次数

加载本地文件并获得未知铬错误:-6

我试图将SD卡中的本地文件加载到WebView中.但是,由于Android 4.1不再起作用,我总是收到消息:文件未找到并且在LogCat中

Unknown chromium error: -6.
Run Code Online (Sandbox Code Playgroud)

url android local webview chromium

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

如果文件已经下载,则DownloadManager不会下载文件

我正在使用DownloadManager下载我的App文件。如果我第二次输入url,DownloadManager它将下载文件,并filename-1.file在末尾加上-1 。有没有办法不让它DownloadManager再次下载?还是我必须自己检查一下?

码:

private void downloadImages(final List<SomeClass> data) {
    RuntimeExceptionDao<SomeClass, Integer> someDao = DatabaseAdapter.getInstance().getSomeDao();
    DownloadManager downloadmanager = (DownloadManager) mContext.getSystemService(Context.DOWNLOAD_SERVICE);
    for(SomeClass someClass : data){
        DownloadManager.Request request = getRequest(someClass);
        someClass.mDownloadId = downloadmanager.enqueue(request);
        someDao.createOrUpdate(someClass);
    }
}

private DownloadManager.Request getRequest(SomeClass someClass) {
    Uri uri = Uri.parse(someClass.mImage);
    DownloadManager.Request request = new DownloadManager.Request(uri);
    request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_HIDDEN);
    request.setVisibleInDownloadsUi(false);
    request.setDestinationInExternalFilesDir(mContext, Environment.DIRECTORY_DOWNLOADS, car.getFileName());
    return request;
}
Run Code Online (Sandbox Code Playgroud)

android overriding download download-manager

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

如何在textView更改文本时为FadeOut和FadeIn设置动画

我尝试在changeText上设置TextView的动画但总是只看到动画的一个方向,我只看到淡出

我尝试的是:beforChange = fadeOut和onChange或者fadein之后

这是我的活动的onCreate方法中的代码:

    final Animation out = new AlphaAnimation(1.0f, 0.0f);
    out.setDuration(1000);

    final Animation in = new AlphaAnimation(0.0f, 1.0f);
    in.setDuration(1000);


    bidFirst.setAnimation(out);
    bidMiddle.setAnimation(out);
    bidLast.setAnimation(out);

    TextWatcher bidWatcher = new TextWatcher() {
      public void onTextChanged(CharSequence s, int start, int before, int count) {
        in.startNow();
        bidFirst.setAnimation(out);
        bidMiddle.setAnimation(out);
        bidLast.setAnimation(out);
      }

      public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        out.startNow();
        bidFirst.setAnimation(in);
        bidMiddle.setAnimation(in);
        bidLast.setAnimation(in);
      }

      public void afterTextChanged(Editable s) {
      }
    };
    bidFirst.addTextChangedListener(bidWatcher);
    bidMiddle.addTextChangedListener(bidWatcher);
    bidLast.addTextChangedListener(bidWatcher);
Run Code Online (Sandbox Code Playgroud)

我认为我的代码有问题,但我相信它必须有效.

我现在拥有的是:在每个setText上,改变后的文本只有FadeOut,但是在文本发生变化后再也没有FadeIn!

animation android fadeout fadein textwatcher

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