Articles of java的

在列表滚动平板电脑后意外重复使用所选列表项背景颜色

对于我在平板电脑上的列表视图,我试图让我选择的列表项选择在选中时保持其状态,但不幸的是我看到了一些奇怪的行为。 出于某种原因,每当我滚动列表到所选项目不可见的点,然后滚动回到所选项目可见的点时,背景颜色意外地被重用。 我相信某些东西需要放在getView方法中,但我不知道如何处理这个方法。 必须采取哪些措施来防止背景颜色被重复使用? 适配器类 public class VictoriaListAdapter extends BaseAdapter { private List mData; private LayoutInflater mInflater; public VictoriaListAdapter (List data, Context context) { mData = data; mData = new ArrayList(mData); mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public int getCount() { return mData.size(); } @Override public String getItem(int position) { return mData.get(position).getStation(); } @Override public […]

非最终类中的代理最终方法

我需要在Android UI Framework中的各种视图类上代理方法,例如TextView 。 特别是TextView#setText(int resId) 。 此方法不是界面的一部分。 因此,Java 代理将无法工作,因为它仅适用于接口。 我需要使用字节码操作。 我发现了一个名为dexmaker的库似乎很有希望。 我假设我需要进行运行时字节代码操作,因为Android View类实际上只能在设备上使用。 Dexmaker可以在具体类上代理公共方法。 然后我注意到TextView#setText(int resId)莫名其妙地是最后的 。 TextView类本身是非final的。 我想我可以派dexmaker来支持非final类的最终方法。 这可能吗? 如果不是,我不想启动这个项目。 这对我的库来说是一个巨大的胜利,因为开发人员不需要为他们的视图提供子类,接口或手动静态方法调用。 我的图书馆需要知道何时在特定视图上设置文本。 代理是完美的设计模式。

升级到Roboguice 3后,注入的对象变为null

我刚刚升级了我们的项目以使用Roboguice 3,突然之间所有注入的对象都变为空,包括POJO,提供者,视图,资源等等。我正在努力弄清楚原因。 首先是gradle构建文件,打开和关闭Proguard并没有什么区别。 我相信我们目前正在使用Roboguice 3.0.1,但我尝试了3.0并仍然遇到了问题。 compile (‘org.roboguice:roboguice:3.+’) { exclude module: ‘asm’ } provided ‘org.roboguice:roboblender:3.+ 我们在模块文件中有一些自定义绑定,所以这是我如何根据维基指定它: 只是为了记录我还尝试在这样的Application类中指定它并且它不起作用: RoboGuice.getOrCreateBaseApplicationInjector( this, RoboGuice.DEFAULT_STAGE, RoboGuice.newDefaultRoboModule(this), new CustomModule(this)); 这是关于它的设置,我们没有改变任何东西,如果我使用Roboguice 2,一切正常。 我还尝试了其他一些事情: 也试过没有Roboblender和注释db RoboGuice.setUseAnnotationDatabases(false); 它没有什么区别。 Ln.d(“Test” + Strings.toString(0)); 这个日志打印得很好所以我认为实际的库是正确打包的。 我尝试使用像RoboGuice.getInjector(this).getInstance(SharedPreferencesHelper.class);手动注入,而不是注入POJO的Provider RoboGuice.getInjector(this).getInstance(SharedPreferencesHelper.class); 并且它会抛出有关Could not find a suitable constructor in some.path.SharedPreferencesHelper. Classes must have either one (and only one) constructor annotated with @Inject or […]

使用ScrimInsetFrameLayout获取错误

我正在使用ScrimInsetsFrameLayout在ToolBar使用StatusBar获取Navigation Drawer ,所以我按照指南阅读了很多关于它但是即使我没有遗漏任何东西也有问题。 每当我点击drawer_listView或ic_drawer的一个(四个)活动时,app force就会关闭,而Logcat没有消息。 MainActivity public class MainActivity extends ActionBarActivity { DrawerLayout mDrawerLayout; ListView mDrawerList; ActionBarDrawerToggle mDrawerToggle; String[] mDrawerListItems; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar); mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer); mDrawerLayout.setStatusBarBackgroundColor(getResources().getColor(R.color.primaryDark)); mDrawerList = (ListView)findViewById(android.R.id.list); mDrawerListItems = getResources().getStringArray(R.array.drawer_list); mDrawerList.setAdapter(new ArrayAdapter (this, android.R.layout.simple_list_item_1, mDrawerListItems)); mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, […]

如何在GLSurfaceView中使用MediaMuxer / MediaCodec InputSurface?

在BigFlake示例之后,有一条评论指出: // Acquire a new frame of input, and render it to the Surface. If we had a // GLSurfaceView we could switch EGL contexts and call drawImage() a second // time to render it on screen. The texture can be shared between contexts by // passing the GLSurfaceView’s EGLContext as eglCreateContext()’s share_context // argument. […]

如何覆盖java方法,并更改参数的可为空性?

我正在覆盖Java库中的方法,该函数的参数注释为@NonNull 。 但是,调用该方法时,参数通常会带有null值。 当我在Kotlin中覆盖该方法时,它会强制我尊重@NonNull注释并将参数标记为不可为空。 当然,当参数带有空值时,Kotlin会在运行时抛出exception。 有什么方法可以覆盖Kotlin中的方法并忽略@NonNull注释? 具体来说,我正在使用适用于Android的appcompat库。 该方法位于AppCompatActivity.java中 @CallSuper public void onSupportActionModeFinished(@NonNull ActionMode mode) { } Kotlin中的覆盖: override fun onSupportActionModeFinished(mode: ActionMode) { super.onSupportActionModeFinished(mode) }

在Libgdx TextField中输入密钥处理

我在我的libgdx应用程序中设置了一个包含三个TextField的舞台,我在桌面模式和Android模式下获得了不同的行为。 在Android上,键入enter键会将光标移动到下一个TextField。 在桌面上,键入enter键不会执行任何操作。 如何在两个平台上使光标一致移动? 我希望能够在用户输入时将焦点设置到另一个字段。 在Android上,无论我将焦点设置为什么,默认输入键行为然后将焦点跳转到该字段。 这是我目前用于移动光标并清除下一个字段的代码: stage.addListener(new InputListener() { @Override public boolean keyUp(InputEvent event, int keycode) { if (keycode == Input.Keys.ENTER) { nextField(); } return false; } }); Gdx.input.setInputProcessor(stage); } private void nextField() { TextField nextField = stage.getKeyboardFocus() == text1 ? text2 : stage.getKeyboardFocus() == text2 ? text3 : text1; nextField.setText(“”); stage.setKeyboardFocus(nextField); } 我已尝试取消事件或从处理程序方法返回true,但焦点仍然在我的代码完成后移动。 […]

如何取消http请求

这是我关于堆栈溢出的第一个问题。 通常我可以自己find答案,但这次我找不到合适的答案。 我也是为Android制作应用程序的新手,所以提前抱歉我的noob’nes。 如果本地IP地址不可用,如何在x miliseconds后取消’android java’中的http请求? 我正在使用AsyncTask请求一个html页面。 该类的代码如下。 我现在拥有的是onPreExecute()中定义的一个定时器,它在X毫秒之后将onCancel()设置为true。 doInBackground()打开一个流等,然后将流写入字符串。 问题是当本地ip地址不可用时,url.openStream()函数会一直运行,直到java.net.ConnectException因timeOut而启动。 我不知道如何使用onCancel()来中断此命令(如果这是可能的话)。 那么如何中断url.openStream命令呢? 或者只是终止AsyncTask线程? private class htmlToString extends AsyncTask { public htmlToString asyncObj; @Override protected void onPreExecute(){ asyncObj = this; new CountDownTimer(connectionTimeout, connectionTimeout) { public void onTick(long millisUntilFinished) {} public void onFinish() { // stop async task if not in progress if (asyncObj.getStatus() == AsyncTask.Status.RUNNING) […]

HATEOAS负责改造? 链接到资源?

如何在改造中使用HATEOAS主体? 在改造中有没有办法使用链接? 或者我应该自己解析它? links: [4] 0: { rel: “self” href: “https://localhost/api/product/9” }- 1: { rel: “comp” href: “https://localhost/api/product/19/comp” }- 2: { rel: “eval” href: “https://localhost/api/product/19/eval” } 我的一般问题是,我如何使用资源链接( http://en.wikipedia.org/wiki/HATEOAS )? 有可能吗? 例如,我如何调用资源的“comp”href并获取我解析的Java-Object(来自JSON)返回?

Android Studio无法find“libiconv.so”

我的条形码扫描应用程序出现问题,代码运行完全,直到我测试扫描按钮,此时它崩溃了,我收到以下错误: 01-28 23:15:51.314 2261-2261/com.example.sage.appp E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.example.sage.appp, PID: 2261 java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file “/data/app/com.example.sage.appp-2/base.apk”],nativeLibraryDirectories=[/vendor/lib, /system/lib]]] couldn’t find “libiconv.so” at java.lang.Runtime.loadLibrary(Runtime.java:366) at java.lang.System.loadLibrary(System.java:989) at com.example.sage.appp.ZBarScannerActivity.(ZBarScannerActivity.java:28) at java.lang.reflect.Constructor.newInstance(Native Method) at java.lang.Class.newInstance(Class.java:1572) at android.app.Instrumentation.newActivity(Instrumentation.java:1065) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2199) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) at android.app.ActivityThread.access$800(ActivityThread.java:144) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) at android.os.Handler.dispatchMessage(Handler.java:102) 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 […]