我需要从资产中获取位图和声音.我尝试这样做:
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)
但我得到的是自由空间,而不是图像.
这该怎么做?
我正在使用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)
我需要在资产中获得文件夹的绝对路径.有人喜欢这样的SD卡:
final String sdDir = Environment.getExternalStorageDirectory() + "Files";
Run Code Online (Sandbox Code Playgroud)
我做错了什么?

首先,我尝试以这种方式获得路径(在绿色ractangle中),但我得到"假".然后我评论这个块并尝试从getAssets()获取路径.list(); 但我第一次看到了3个文件夹.
我希望像这样"绿色"大规模,但我需要使用资产中的文件:
帮我获取我的Files文件夹的绝对路径.
我有一个 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) 我最近切换到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) 我想测试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
我想在列表中查看Save€XX的显示.保存€XX是一个TextView,可以是VISIBLE或INVISIBLE.我使用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)
我有'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
我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>
{"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)
相反:
{"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) 我知道这个问题已经被问到了,但我找不到合适的答案来解决我的问题.我希望你们能帮助我.
例外情况告诉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)
我试图清理并重建项目.
然后我尝试使高速缓存无效并重新启动.
我还运行此命令以了解依赖项中的重复:
./gradlew -q dependencies …