小编Val*_*Val的帖子

android从资产中获取位图或声音

我需要从资产中获取位图和声音.我尝试这样做:

BitmapFactory.decodeFile("file:///android_asset/Files/Numbers/l1.png");
Run Code Online (Sandbox Code Playgroud)

像这样:

getBitmapFromAsset("Files/Numbers/l1.png");
    private Bitmap getBitmapFromAsset(String strName) {
        AssetManager assetManager = getAssets();
        InputStream istr = null;
        try {
            istr = assetManager.open(strName);
        } catch (IOException e) {
            e.printStackTrace();
        }
        Bitmap bitmap = BitmapFactory.decodeStream(istr);
        return bitmap;
    }
Run Code Online (Sandbox Code Playgroud)

但我得到的是自由空间,而不是图像.

这该怎么做?

audio android assets android-bitmap

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

JUnit4 - AssertionFailedError:未找到任何测试

我正在使用AndroidJUnitRunner和Espresso.

我写了一个简单的测试但总是收到这个例外.根据Stackoverflow的回答,问题是弄乱JUnit3和JUnit4,但我从未在我的项目中使用过JUnit3.

junit.framework.AssertionFailedError:在com.walletsaver.app.test.espresso.SignUpPopupTest中找不到测试

package com.walletsaver.app.test.espresso;

import android.support.test.rule.ActivityTestRule;
import android.support.test.runner.AndroidJUnit4;
import android.test.suitebuilder.annotation.SmallTest;

import com.walletsaver.app.activity.LoginActivity;

import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;

import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.action.ViewActions.click;
import static android.support.test.espresso.matcher.ViewMatchers.withText;

@RunWith(AndroidJUnit4.class)
@SmallTest
public class SignUpPopupTest {

    @Rule
    public ActivityTestRule<LoginActivity> mActivityRule =
            new ActivityTestRule<>(LoginActivity.class);

    @Test
    public void checkSignUpPopup() throws Exception {
        onView(withText("Sign Up")).perform(click());
    }
}
Run Code Online (Sandbox Code Playgroud)

运行配置: 在此输入图像描述

输出: 在此输入图像描述

testing junit android junit4 android-espresso

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

android资产管理器

我需要在资产中获得文件夹的绝对路径.有人喜欢这样的SD卡:

final String sdDir = Environment.getExternalStorageDirectory() + "Files";
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

在此输入图像描述

首先,我尝试以这种方式获得路径(在绿色ractangle中),但我得到"假".然后我评论这个块并尝试从getAssets()获取路径.list(); 但我第一次看到了3个文件夹.

我希望像这样"绿色"大规模,但我需要使用资产中的文件:

看图像

帮我获取我的Files文件夹的绝对路径.

android assets

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

如何序列化/反序列化arrayList(Object)

我有一个 ArrayList<ItemList>

其中ItemList是:

public class ItemList {
    public ArrayList<Item> it = new ArrayList<Item>();
    public String name = "";

    public ItemList() {
    }
}
Run Code Online (Sandbox Code Playgroud)

和项目是:

public class Item {
    public String name = "";
    public int count = 0;

    public Item() {
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试序列化这个列表:

try {
            FileOutputStream fileOut = new FileOutputStream(sdDir + serFile);
            ObjectOutputStream out = new ObjectOutputStream(fileOut);
            out.writeObject(List_Of_Lists);
            out.close();
            fileOut.close();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
Run Code Online (Sandbox Code Playgroud)

我认为这是有效的,因为我在文件夹中找到了这个文件.

但我无法从文件反序列化 ArrayList<ItemList>

码:

        try { …
Run Code Online (Sandbox Code Playgroud)

java serialization android deserialization

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

IntelliJ Idea不会在R.java中生成id

我最近切换到IntelliJ Idea 12.

现在在android上创建了一个项目并立即遇到了一个问题:在R.java中没有生成id

重建项目没有帮助.

也许在IntelliJ Idea中有什么微妙之处我不知道?

错误:

12-01 16:08:15.067: ERROR/AndroidRuntime(7108): FATAL EXCEPTION: main
android.content.res.Resources$NotFoundException: String resource ID #0x1
at android.content.res.Resources.getText(Resources.java:266)
at android.widget.TextView.setText(TextView.java:3624)
at com.example.poem_new.MyActivity.invalidateCounters(MyActivity.java:41)
at com.example.poem_new.MyActivity.access$000(MyActivity.java:11)
at com.example.poem_new.MyActivity$1.onTextChanged(MyActivity.java:29)
at android.widget.TextView.sendOnTextChanged(TextView.java:8027)
at android.widget.TextView.handleTextChanged(TextView.java:8074)
at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:8454)
at android.text.SpannableStringBuilder.sendTextChange(SpannableStringBuilder.java:892)
at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:352)
at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:266)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:443)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:420)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:29)
at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:669)
at android.view.inputmethod.BaseInputConnection.commitText(BaseInputConnection.java:188)
at com.android.internal.widget.EditableInputConnection.commitText(EditableInputConnection.java:149)
at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:315)
at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:85)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:4945)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

R.java文件为空:

    /* This stub is …
Run Code Online (Sandbox Code Playgroud)

java android compilation intellij-idea

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

浓缩咖啡 - 单击对话框的按钮

我想测试Android 6的权限,但我找不到使用Espresso点击"允许"按钮的方法.有没有办法做到这一点?

在此输入图像描述

Espresso的版本是2.2.1.

考试:

    @Test
    public void acceptFirstPermission() throws Exception {
        onView(withText("ALLOW")).perform(click());
    }
Run Code Online (Sandbox Code Playgroud)

行为:

我仍然使用Dialog接收冻结的屏幕(如屏幕截图所示).一直测试执行直到他完成.

输出:

Running tests
Test running started
android.support.test.espresso.NoActivityResumedException: No activities in stage RESUMED. Did you forget to launch the activity. (test.getActivity() or similar)?
at dalvik.system.VMStack.getThreadStackTrace(Native Method)
at java.lang.Thread.getStackTrace(Thread.java:580)
at android.support.test.espresso.base.DefaultFailureHandler.getUserFriendlyError(DefaultFailureHandler.java:82)
at android.support.test.espresso.base.DefaultFailureHandler.handle(DefaultFailureHandler.java:53)
at android.support.test.espresso.ViewInteraction.runSynchronouslyOnUiThread(ViewInteraction.java:184)
at android.support.test.espresso.ViewInteraction.doPerform(ViewInteraction.java:115)
at android.support.test.espresso.ViewInteraction.perform(ViewInteraction.java:87)
at com.walletsaver.app.test.espresso.MarshmallowPermissionsTest.acceptFirstPermission(MarshmallowPermissionsTest.java:31)
at java.lang.reflect.Method.invoke(Native Method)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at android.support.test.internal.statement.UiThreadStatement.evaluate(UiThreadStatement.java:55)
at android.support.test.rule.ActivityTestRule$ActivityStatement.evaluate(ActivityTestRule.java:257)
at org.junit.rules.RunRules.evaluate(RunRules.java:20)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at …
Run Code Online (Sandbox Code Playgroud)

android android-espresso android-6.0-marshmallow runtime-permissions

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

Espresso - 检查ListView中是否存在TextView

我想在列表中查看Save€XX的显示.保存€XX是一个TextView,可以是VISIBLEINVISIBLE.我使用JUnit 4和Espresso 2.2.1.

我试着像这样检查:

onView(withText(startsWith("Save"))).check(matches(isDisplayed()));
Run Code Online (Sandbox Code Playgroud)

但总是得到一个错误:

android.support.test.espresso.AmbiguousViewMatcherException: 'with text: a string starting with "Save"' matches multiple views in the hierarchy.
Run Code Online (Sandbox Code Playgroud)

如果TextView存在于带有Espresso的ListView中,有没有办法?

UPDATE

我也试过用onData:

onData(hasToString(startsWith("Save")))
                .inAdapterView(withId(R.id.suggestion_list_view)).atPosition(0)
                .check(matches(isDisplayed()));
Run Code Online (Sandbox Code Playgroud)

但它似乎onData适用于数据层,但不适用于视图层.因此,我收到错误:

java.lang.RuntimeException: No data found matching: with toString() a string starting with "Save" contained values: <[Data: ...]>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

junit android junit4 android-espresso

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

当我从图库中选择图片时,onCreate在onActivityResult之后调用

我有'SherlockFragmentActivity'和'onActivityResult'.

我试图从相机和画廊获取图像并裁剪它.问题是我在onActivityResult调用后返回我的活动而不是片段.

...
            FragmentTransaction t = fragmentManager.beginTransaction();
            LogInFragment logFrag = new LogInFragment();
            t.replace(R.id.fragment_container, logFrag);
            t.commit();
...
     @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
        }
Run Code Online (Sandbox Code Playgroud)

活动布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:id="@+id/fragment_container"
                android:background="@color/textWhite"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent">

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

我还选择了'SherlockFragment',我选择了图像:

startImagePickerDialog(this);


public void startImagePickerDialog() {
        AlertDialog.Builder myAlertDialog = new AlertDialog.Builder(getSherlockActivity());
        myAlertDialog.setTitle("Upload Pictures Option");
        myAlertDialog.setMessage("How do you want to set your picture?");

        myAlertDialog.setPositiveButton("Gallery", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface arg0, int arg1) {
                Intent intent = new Intent();
                // call android default …
Run Code Online (Sandbox Code Playgroud)

android android-intent android-fragments android-activity actionbarsherlock

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

Jsoup.parse()方法的替代方案

Jsoup.parse()用来解析这些数据.一切都很好,但需要很长时间.

例如,此数据需要20秒.用于解析.是否有其他解决方案满足我的需求?

码:

rezult = Jsoup.parse(res.parse().outerHtml(), "UTF-8").text();
Run Code Online (Sandbox Code Playgroud)

res它从文字链接.

===========更新=============

我将这个变量分开Jsoup.parse()并理解它是问题的根源.它需要20秒,而不是Jsoup.parse().

String tmp = res.parse().outerHtml();
Run Code Online (Sandbox Code Playgroud)

这只需要1秒:

rezult = Jsoup.parse(tmp, "UTF-8").text();
Run Code Online (Sandbox Code Playgroud)

我使用此代码从此链接获取数据.我使用Jsoup.parse()因为没有它我得到这样的东西:

<html>
    <head></head>
    <body>
    {&quot;success&quot;:true,&quot;currentUser&quot;:43743,&quot;careTypes&quot;:[{&quot;id&quot;:1,&quot;name&quot;:&quot;\u0421\u0442\u0438\u0440\u043a\u0430&quot;,&quot;description&quot;:&quot;\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u0442\u0438\u0440\u043a\u0438 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0437\u0434\u0435\u0441\u044c, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b \u0432\u044b\u0431\u0435\u0440\u0435\u0442\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u044b\u0439 \u0440\u0435\u0436\u0438\u043c.&quot;},{&quot;id&quot;:2,&quot;name&quot;:&quot;\u041e\u0442\u0431\u0435\u043b\u0438\u0432\u0430\u043d\u0438\u0435&quot;,&quot;description&quot;:&quot;\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043e\u0442\u0431\u0435\u043b\u0438\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0437\u0434\u0435\u0441\u044c, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b \u0432\u044b\u0431\u0435\u0440\u0435\u0442\u0435 
Run Code Online (Sandbox Code Playgroud)

相反:

{"success":true,"currentUser":43743,"careTypes":[{"id":1,"name":"\u0421\u0442\u0438\u0440\u043a\u0430","description":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u0442\u0438\u0440\u043a\u0438 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0437\u0434\u0435\u0441\u044c, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b \u0432\u044b\u0431\u0435\u0440\u0435\u0442\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u044b\u0439 \u0440\u0435\u0436\u0438\u043c."},{"id":2,"name":"\u041e\u0442\u0431\u0435\u043b\u0438\u0432\u0430\u043d\u0438\u0435","description":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043e\u0442\u0431\u0435\u043b\u0438\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0437\u0434\u0435\u0441\u044c, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b \u0432\u044b\u0431\u0435\u0440\u0435\u0442\u0435 
Run Code Online (Sandbox Code Playgroud)

但现在主要的问题是将res.parse()方法更改为其他更少的执行时间.

===========更新2 =============

 long t2 = …
Run Code Online (Sandbox Code Playgroud)

html parsing android json jsoup

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

Gradle - DexException:多个dex文件定义

我知道这个问题已经被问到了,但我找不到合适的答案来解决我的问题.我希望你们能帮助我.

例外情况告诉Multiple dex files defined我,我尝试了几种常见的方法来解决这个问题.不幸的是,这没有帮助.

* What went wrong:
Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2



Cause: com.android.dex.DexException: Multiple dex files define Lnet/jcip/annotations/GuardedBy;
        UNEXPECTED TOP-LEVEL EXCEPTION:
        com.android.dex.DexException: Multiple dex files define Lnet/jcip/annotations/GuardedBy;
            at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:579)
            at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:535)
            at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:517)
            at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:164)
            at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
            at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:504)
            at com.android.dx.command.dexer.Main.runMonoDex(Main.java:334)
            at com.android.dx.command.dexer.Main.run(Main.java:277)
            at com.android.dx.command.dexer.Main.main(Main.java:245)
            at com.android.dx.command.Main.main(Main.java:106)
Run Code Online (Sandbox Code Playgroud)
  1. 我试图清理并重建项目.

    • 建立 - >清洁项目
    • 构建 - >重建项目
  2. 然后我尝试使高速缓存无效并重新启动.

    • 文件 - >使高速缓存无效并重新启动
  3. 我还运行此命令以了解依赖项中的重复:

    ./gradlew -q dependencies …

android gradle dex android-studio android-gradle-plugin

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