我已经使用Git一段时间了,但是不断要求输入密码开始让我感到困惑.
我正在使用OSX和Github,我按照GitHub的Set Up Git页面的指示设置了Git和我的SSH密钥 .我还在我的Mac OSX钥匙串中添加了github SSH密钥,如GitHub的SSH密钥密码页面所述.我的公钥是在Git注册的.
不过,每次我尝试git pull,我都要输入我的用户名和密码.我需要为此设置除SSH密钥以外的其他东西吗?
我正在使用a GridView
来显示一堆本质上的视图LinearLayouts
.我希望LinearLayouts
它们都是方形的,但我也希望它们是动态大小的 - 也就是说,有两列我希望LinearLayouts
根据屏幕的大小进行拉伸但保持方形.有没有办法通过xml
布局来做到这一点,还是我必须以编程方式设置高度和宽度?
我正在尝试将新RecyclerView
类用于我希望组件在滚动时捕捉到特定元素的场景(将旧版Android Gallery
作为具有中心锁定项的此类列表的示例).
这是我到目前为止采取的方法:
我有一个接口,ISnappyLayoutManager
它包含一个方法,getPositionForVelocity
它计算视图应该在给定初始fling速度的情况下结束滚动的位置.
public interface ISnappyLayoutManager {
int getPositionForVelocity(int velocityX, int velocityY);
}
Run Code Online (Sandbox Code Playgroud)
然后我有一个类,它以这样的方式SnappyRecyclerView
子类化RecyclerView
并覆盖它的fling()方法,以便将视图推送到正确的数量:
public final class SnappyRecyclerView extends RecyclerView {
/** other methods deleted **/
@Override
public boolean fling(int velocityX, int velocityY) {
LayoutManager lm = getLayoutManager();
if (lm instanceof ISnappyLayoutManager) {
super.smoothScrollToPosition(((ISnappyLayoutManager) getLayoutManager())
.getPositionForVelocity(velocityX, velocityY));
}
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
由于几个原因,我对这种方法不是很满意.首先,似乎与"RecyclerView"的哲学相反,它必须将其子类化以实现某种类型的滚动.其次,如果我只想使用默认值LinearLayoutManager
,这会变得有点复杂,因为我必须弄乱它的内部,以便了解它的当前滚动状态并精确计算滚动到的位置.最后,这甚至没有处理所有可能的滚动方案,就像你移动列表然后暂停然后举起手指一样,没有发生任何事件(速度太低),所以列表仍然处于中途位置.这可以通过添加一个on scroll状态监听器来处理RecyclerView
,但也感觉非常hacky.
我觉得我必须遗漏一些东西.有一个更好的方法吗?
我有一个活动,其contentView是a的一个实例DrawerLayout
,它有一个带有抽屉指示器的导航抽屉,显示在操作栏中.该活动包含一个Fragment
,让我们调用它ListFragment
,其中包含一个选项列表.单击选项时,我将替换为ListFragment
a DetailFragment
.
此时,我想显示一个"向上"导航选项而不是导航抽屉指示器.如果我通过调用禁用抽屉指示器,我可以显示"向上"图标mDrawerToggle.setDrawerIndicatorEnabled(false)
,但这只会删除抽屉图标 - 它不会删除功能 - 也就是说,当我点击插入符号时,导航抽屉是仍然开放.
此外,在这些子视图中,我想通过从屏幕边缘拖动来禁用抽屉的打开.我试过通过调用尝试这样做,setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED)
但它似乎没有禁用此功能.
我已经尝试扩展ActionBarDrawerToggle
类以防止在单击指示器时打开抽屉 - 但是,所有发生的情况是执行覆盖操作("向上"导航),但抽屉仍然打开.
我还在使用片段时实现了在Android导航抽屉图像和向上插入符之间切换的步骤.它可以显示插入符号,但是尽管覆盖了向上按钮功能,菜单仍会打开(应用程序确实会导航回来 - 它也会打开抽屉).
所以,长话短说:当我的布局根是DrawerLayout
:时,有没有(最好是干净和优雅,但此时我会用hacky)方式实现这些东西:
mDrawerToggle.setDrawerIndicatorEnabled(false))
好吧,看起来如果我都覆盖了ActionBarDrawerToggle
AND onOptionsItemSelected
,当我点击插入符号时菜单没有打开.但是如果我从边缘拖动它仍然会打开.救命!
出于某种原因,我能够看到Log.i()及以上所有级别的消息,但不能看到Log.d()或Log.v()级别的消息.没有太多运气找到原因.任何人都知道如何解决这个问题?
一些进一步的细节:这不是我忘记在Eclipse中的logcat下拉列表中选择适当级别的问题.有问题的日志消息没有出现在我用于手机上的logcat跟踪的应用程序上.(虽然调试日志消息显示在其他应用程序中).我正在运行OSX.
我有一个包含ViewPager的片段.当我给布局充气时,我给它分配一个OnLongClick监听器,如下所示:
mPager.setOnLongClickListener(mOnPagerLongClickListener);
Run Code Online (Sandbox Code Playgroud)
但是,当我在ViewPager上执行长按时,没有任何反应.我能做些什么来完成这项工作?或者我是否需要将侦听器分配给ViewPager中的每个视图?将侦听器分配给ViewPager包含的GridViews似乎也不起作用.
我试图允许我的用户从他们的联系人中选择具有电子邮件地址的联系人.这是单击相应按钮时执行的代码:
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Email.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT);
Run Code Online (Sandbox Code Playgroud)
这在我自己的手机上工作正常,但在发布我的应用程序后,我发现我的一些用户发生了以下异常:
0 android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.PICK dat=content://com.android.contacts/data/emails }
1 at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1638)
2 at android.app.Instrumentation.execStartActivity(Instrumentation.java:1510)
3 at android.app.Activity.startActivityForResult(Activity.java:3244)
4 at com.fitrocket.android.InviteMethodSelectionAct.onClick(InviteMethodSelectionAct.java:59)
5 at android.view.View.performClick(View.java:3549)
6 at android.view.View$PerformClick.run(View.java:14400)
7 at android.os.Handler.handleCallback(Handler.java:605)
8 at android.os.Handler.dispatchMessage(Handler.java:92)
9 at android.os.Looper.loop(Looper.java:154)
10 at android.app.ActivityThread.main(ActivityThread.java:4945)
11 at java.lang.reflect.Method.invokeNative(Native Method)
12 at java.lang.reflect.Method.invoke(Method.java:511)
13 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
14 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
15 at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
我自己无法重现这一点,所以我想知道是否有人能告诉我这可能是什么问题?
我有一个像这样定义的表:
CREATE TABLE `Message` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`user_id` integer NOT NULL,
`user_to` integer NOT NULL,
`top_num` integer NOT NULL,
`priority` smallint NOT NULL,
`error` varchar(120) NOT NULL,
UNIQUE (`user_id`, `user_to`, `top_num`)
);
Run Code Online (Sandbox Code Playgroud)
后来,我添加了另一个列,msg_type,如下所示:
ALTER TABLE Message ADD COLUMN msg_type SMALLINT(6) NOT NULL DEFAULT 0;
Run Code Online (Sandbox Code Playgroud)
但是,我已经意识到我需要将原始UNIQUE
约束更改为包含msg_type
.我试过跑步
ALTER TABLE Message
ADD UNIQUE INDEX (`user_id`, `user_to`, `top_num`, `msg_type`);
Run Code Online (Sandbox Code Playgroud)
但INSERT进入我的表仍然失败,错误消息表明这是因为旧的唯一性约束失败.
当我describe Messages
在mysql中调用时,我看到以下内容:
+-----------------+----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default …
Run Code Online (Sandbox Code Playgroud) 这是一个人为的例子,可以解决我遇到的情况,但基本上,我有一个对象数组,实际上包含整数数组,我正在尝试这样做.这是一个模拟这种情况的代码片段:
Object[] foo = new Object[3];
foo[0] = new int[] { 1, 2, 3 };
foo[1] = new int[] { 4, 5, 6 };
foo[2] = new int[] { 7, 8, 9 };
int[][] bar = (int[][]) foo;
Run Code Online (Sandbox Code Playgroud)
当我尝试这样做时,我得到了例外 Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [[I
有没有办法在不复制数组的情况下执行此操作(我可能不想这样做,因为foo
在生产中会非常大)?如果没有,为什么不呢?
我有一个我正在旋转的ImageView用作加载动画.一旦我的数据被加载,我试图停止动画,但不是循环到最后然后停止,动画进入中途点,然后停止,然后图像快速恢复到其原始状态,这看起来很丑陋.
这是我尝试过的:
选项1:
ImageView iv = (ImageView) findViewById(R.id.refreshImage);
if (iv != null) {
iv.clearAnimation();
}
Run Code Online (Sandbox Code Playgroud)
选项2:
ImageView iv = (ImageView) findViewById(R.id.refreshImage);
if (iv != null && iv.getAnimation() != null) {
iv.getAnimation().cancel();
}
Run Code Online (Sandbox Code Playgroud)
选项3:
ImageView iv = (ImageView) findViewById(R.id.refreshImage);
if (iv != null && iv.getAnimation() != null) {
iv.getAnimation().setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
animation.cancel();
}
@Override
public void onAnimationEnd(Animation animation) {
}
});
}
Run Code Online (Sandbox Code Playgroud)
最终结果在所有三种情况下都是相同的.如何旋转图像并将其放回原点?
编辑:
一些进一步的信息:我的旋转动画:
<?xml version="1.0" encoding="utf-8"?> …
Run Code Online (Sandbox Code Playgroud)