Articles of java的

Dagger 2范围和子组件

我正在努力使我的应用程序更好,代码更易于使用Dagger2我抓住了一般的想法,但仍然无法弄清楚范围是如何管理Dagger2我把dagger注入我的项目(听起来很有趣)。 我创建了ApplicationComonent组件,它在我的项目中完美运行。 这是我的代码。 @Singleton @Component(modules = { ApplicationModule.class, ThreadingModule.class, NetworkModule.class, DatabaseModule.class, ServiceModule.class, ParseModule.class, PreferencesSessionModule.class}) public interface ApplicationComponent { ActivityComponent activityComponent(ActivityModule activityModule); void inject(BaseActivity baseActivity); void inject(MainAppActivity mainAppActivity); void inject(MyApplication application); void inject(BaseFragment baseFragment); void inject(MyService service); void inject(RegistrationIntentService service); } 我在MyApplication类中创建我的组件实例 private void initializeAndInjectComponent() { mApplicationComponent = DaggerApplicationComponent .builder() .threadingModule(new ThreadingModule(1)) .applicationModule(new ApplicationModule(this)) .networkModule(new NetworkModule( […]

Android Asyntask:对上下文使用弱引用以避免设备旋转屏幕

在Apress Pro Android 4中 ,作者说过: 当设备旋转时,[…]当前正在运行的活动的上下文将不再有效。 […]一种方法是使用弱活动参考而不是硬参考[…] 但作者只是建议这一点,并没有告诉它是如何完成的。 谁曾经这样做过请给我一个例子。

如何从Android中每个动态创建的EditText获取数据?

我已经成功创建了EditTexts,具体取决于Android中的用户输入,我也使用setId()方法为它们分配了唯一的ID。 现在我想要做的是当用户点击一个按钮时从动态创建的EditText获取值,然后将所有值存储在Stringvariables中。 即来自具有id为’1’的EditText的值应保存在Stringtypes的str1中,依此类推,具体取决于EditTexts的数量。 我正在使用getid()和gettext().toString()方法,但它似乎有点棘手……我无法将EditText的每个值分配给Stringvariables。 当我尝试这样做时会发生NullPointerException ,如果不是没有显示用户输入数据的情况,我会在toast中显示它。 inheritance人,代码: EditText ed; for (int i = 0; i < count; i++) { ed = new EditText(Activity2.this); ed.setBackgroundResource(R.color.blackOpacity); ed.setId(id); ed.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); linear.addView(ed); } 我现在如何将每个EditText中的值传递给每个不同的字符串variables? 如果某个机构可以帮助您提供示例代码,那将会很不错。

带有Facebook登录示例的java.lang.RuntimeException

我正在关注Facebook指南 ,为Android制作登录应用程序。 后: 在虚拟设备上安装Facebook应用程序(不必要) 将Facebook SDK作为模块导入Android Studio 将以前的模块导入到项目中 修改代码,如指南所述 该项目编制。 但是,当我运行机器并尝试打开应用程序时,它崩溃显示: 不幸的是,该应用程序已停止。 阅读类似这样的post后,我找不到解决方案。 我使用Android 0.5.8,Oracle JDK 7和API 16作为目标 , 最小和最大 。 主要文件是activity_main.xml , MainActivity.java和MainFragment.java 。 这是最新的logcat输出: 05-30 03:15:54.127 647-664/com.jdk8.minifacebookloginapp.app E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1 java.lang.RuntimeException: An error occured while executing doInBackground() at android.os.AsyncTask$3.done(AsyncTask.java:299) at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) at java.util.concurrent.FutureTask.setException(FutureTask.java:124) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) at java.util.concurrent.FutureTask.run(FutureTask.java:137) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) […]

Facebook的Android ProGuard设置

我终于find了为什么我的应用程序崩溃为了发布而构建。 ProGuard确实从我的应用程序中剥离了代码,但是我通过在proguard–android.txt(在sdk中find)中使用keep命令手动添加类来防止这种情况。 对于Facebook,我用过: -keep class com.facebook.android.* -keep class android.webkit.WebViewClient -keep class * extends android.webkit.WebViewClient -keepclassmembers class * extends android.webkit.WebViewClient { ; } 但我想我仍然缺少一些东西。 该应用程序现在无崩溃,但我无法登录Facebook并使用Open Graph。 当我在调试模式下构建时,一切正常。 使用Facebook和Facebook的Open Graph有哪些设置? 编辑 这是我为ProGuard手动添加的命令: -dontwarn android.support.** # ActionBarSherlock -keep class android.support.** { *; } -keep interface android.support.** { *; } -keep class com.actionbarsherlock.** { *; } -keep interface com.actionbarsherlock.** […]

将项目导入Android Studio有关ActionBarSherlock的问题

是否有其他人在使用ActionBarSherlock导入项目时遇到问题? 我总共有100个错误和17个警告。 这在Eclipse完美运行。 我按照步骤创建了Gradle构建文件 。 在我尝试构建项目之前没有导入错误。 我也尝试重新下载ABS新鲜并替换到我的项目中。 ABS和IntelliJ是否存在已知问题? (当然Android Studio现在基于哪个) 以下是我看到的一些错误: java: … Workspace/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockFragment.java:4: cannot find symbol symbol : class Fragment location: package android.support.v4.app java: … Workspace/ActionBarSherlock/src/com/actionbarsherlock/app/SherlockListFragment.java:4: cannot find symbol symbol : class ListFragment location: package android.support.v4.app java: … Workspace/ActionBarSherlock/src/com/actionbarsherlock/widget/SuggestionsAdapter.java:33: package android.support.v4.widget does not exist 任何帮助真的很感激 编辑:使用标准IntelliJ IDEA似乎没有问题。 许多在线指南用于设置ABS。 正如杰克所说,他实际上是在开发IntelliJ中的东西 以下是一个示例指南: http : //android-wtf.com/2012/09/how-to-configure-actionbarsherlock-with-intellij-idea/ 但是,我仍然不确定为什么它不能在Android […]

如何从Android中的arraylist中删除重复值

ArrayList values=new ArrayList(); values.add(“s”); values.add(“n”); values.add(“a”); values.add(“s”); 在这个数组中,我想删除重复的值。

BUG:createWindowSurface失败了EGL_BAD_ALLOC

我在Google Play上有一个应用程序,用于倒计时数字和字母。 在这个应用程序中,我有以下活动: google sigin archivements 服务 我使用Google Analytics和ACRA进行错误报告。 我不使用GLsurfaceView,但我每天使用一次或两次ACRA,这给了我这些错误: java.lang.RuntimeException: createWindowSurface failed EGL_BAD_ALLOC at android.view.HardwareRenderer$GlRenderer.createSurface(HardwareRenderer.java:763) at android.view.HardwareRenderer$GlRenderer.createEglSurface(HardwareRenderer.java:663) at android.view.HardwareRenderer$GlRenderer.initialize(HardwareRenderer.java:502) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1325) at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2467) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4424) 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) 有谁知道发生了什么? 我不使用surfaceView; 谁能帮我?

从MainActivity类中的另一个函数访问WebView

如何正确访问onCreate函数中的“view”variables? 我想要loadUrl()但它会抛出一个错误, public Emitter.Listener onServerReceive = new Emitter.Listener() { on view = loadUrl : E/AndroidRuntime: FATAL EXCEPTION: main java.lang.NullPointerException at com.myapp.MainActivity$7$1.run(MainActivity.java:399) at android.os.Handler.handleCallback(Handler.java:615) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:177) at android.app.ActivityThread.main(ActivityThread.java:4947) 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:1038) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805) at dalvik.system.NativeStart.main(Native Method) import com.github.nkzawa.emitter.Emitter; …. public class MainActivity extends Activity { WebView view; Socket mSocket; @Override […]

录制video时启用相机闪光灯

我需要一种方法来控制Android设备上的摄像头闪光灯,同时录制video。 我正在制作一个闪光灯应用程序,并使用闪烁的闪光灯拍摄video将导致能够记录高速移动的物体,如风扇叶片。 只能通过启动video预览并在摄像机参数中设置FLASH_MODE_TORCH来启用闪光灯。 这看起来像这样: Camera c = Camera.open(); Camera.Parameters p = c.getParameters(); p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); c.setParameters(p); c.startPreview(); 预览开始后,我可以来回翻转该参数以打开和关闭灯光。 这很有效,直到我尝试录制video。 麻烦的是,为了将相机送到MediaRecorder,我首先要解锁它。 MediaRecorder m = new MediaRecorder(); c.unlock(); // the killer m.setCamera(c); 解锁后,我无法再更改摄像机参数,因此无法更改闪光灯状态。 我不知道是否真的可以这样做,因为我不是最好的java-hacking,但这是我所知道的: Camera.unlock()是一个本机方法,所以我无法真正看到它锁定我的方式背后的机制 Camera.Parameter有一个包含其所有参数的HashMap Camera.setParameters(Parameters)获取HashMap,将其转换为字符串,并将其传递给本机方法 我可以从HashMap消除所有参数但是TORCH-MODE,相机仍然会接受它 所以,我仍然可以访问相机,但它不会听我说的任何东西。 (这是Camera.unlock()的目的) 编辑: 检查本机代码后,我可以看到在CameraService.cpp中我对Camera.setParameters(Parameters)的调用被拒绝,因为我的进程ID与摄像头服务记录的进程ID不匹配。 所以这似乎是我的障碍。 EDIT2: 看起来MediaPlayerService是在录制video时控制摄像机的主要服务。 我不知道是否可能,但如果我能以某种方式在我自己的进程中启动该服务,我应该能够跳过Camera.unlock()调用。 EDIT3: 最后一个选择是,如果我能以某种方式获得指向CameraHardwareInterface的指针。 从它的外观来看,这是一个特定于设备的接口,可能不包括PID检查。 这个问题的主要问题是我能find指向它的唯一地方是在CameraService中,并且CameraService没有说话。 编辑4 :(几个月后) 在这一点上,我认为不可能做我原本想要的。 我不想删除有人确实回答的问题,但我并没有积极寻求答案。 (虽然,收到有效的答案会很棒。)