我在自定义视图中有这个方法,它扩展了FrameLayout:
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
int currentItem = vp.getCurrentItem();
if (inDragPanelZone(currentItem, ev.getX(), ev.getY()) && ev.getAction() == MotionEvent.ACTION_DOWN) {
if (!shouldAllowPaging()) {
return true;
}
vp.setPagingEnabled(true);
}
return super.dispatchTouchEvent(ev);
}
Run Code Online (Sandbox Code Playgroud)
偶尔 - 我得到以下例外:
java.lang.IllegalArgumentException: pointerIndex out of range
at android.view.MotionEvent.nativeGetAxisValue(Native Method)
at android.view.MotionEvent.getX(MotionEvent.java:1995)
at android.support.v4.view.MotionEventCompatEclair.getX(MotionEventCompatEclair.java:32)
at android.support.v4.view.MotionEventCompat$EclairMotionEventVersionImpl.getX(MotionEventCompat.java:86)
at android.support.v4.view.MotionEventCompat.getX(MotionEventCompat.java:210)
at android.support.v4.view.ViewPager.onTouchEvent(ViewPager.java:1734)
at android.view.View.dispatchTouchEvent(View.java:5710)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1951)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1712)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
at MyView.dispatchTouchEvent(DraggablePane.java:176)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1918) …Run Code Online (Sandbox Code Playgroud) 我已经在开发者控制台上传的APK文件到Alpha测试选项卡,并添加了谷歌组我的Alpha测试人员.当尝试输入生成的URL时,我得到页面未找到错误(404).
是否与我的应用仍处于草稿模式这一事实相关?
一般问题 我可以将碎片定义为单身人士吗?
具体问题
在我的应用程序中,我有一个'FragmentActivity',FragmentPager其中有一个有两个片段,FragmentA和FragmentB.
我在FragmentAextends Fragment类中将片段定义为单例:
private static instance = null;
public static FragmentA getInstance() {
if (instance == null) {
instance = new FragmentA();
}
return instance;
}
private FragmentA() {}
Run Code Online (Sandbox Code Playgroud)
在我的FragmentPagerAdapter:
@Override
public Fragment getItem(int position) {
switch(position){
Fragment fragment = null;
case 0:
fragment = FragmentA.getInstance();
break;
case 1:
fragment = FragmentB.getInstance();
break;
}
return fragment;
}
Run Code Online (Sandbox Code Playgroud)
这就是我如何夸大片段布局:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle …Run Code Online (Sandbox Code Playgroud) android android-fragments android-viewpager android-fragmentactivity
我有一个由单个组成的Android应用程序Activity.我怎样才能确保Activity在给定时间内只存在一个应用程序实例(== )?我遇到了一种情况,我通过多次点击应用程序图标成功打开了我的应用程序的多个实例(这不会一直重现).
我的应用程序由一个单独组成Activity.在这个活动中,我正在创建多个HandlerThreads,它们在循环中运行以执行套接字阻塞操作.
目前我HandlerThread在我的期间向这些人发布了一条戒烟信息Activity.onDestroy().
有时,当我打开我的应用程序,关闭它并重新启动它时,它会崩溃(很多时候是由于向未运行的处理程序线程发送消息).
我的问题是:关闭我的应用程序时关闭的正确方法HandlerThread是什么?(请注意,那些线程可能在套接字操作上阻塞).
编辑:更多信息: 我有一个处理程序线程池,它是在onCreate中启动的(当我第一次启动我的应用程序时没问题).
每个处理程序runnable循环都包含一个
if (shouldRun) {
//body
}
else {
close();
}
Run Code Online (Sandbox Code Playgroud)
声明.
close方法删除所有挂起的消息和runnables,并向处理程序发送一条消息,使其调用它looper.quit().这样,如果当前处理程序线程被IO操作阻止,只有一旦它完成它,他将退出().
在这个方法文档中,它写道:
x The x-coordinate of origin for where to draw the text
y The y-coordinate of origin for where to draw the text
Run Code Online (Sandbox Code Playgroud)
但它没有说明这个文本的方向.我知道文本是从原点开始绘制的,但是当我给出以下参数时,我的文本会被删除:
canvas.drawText(displayText, 0, canvas.getHeight(), textPaint);
Run Code Online (Sandbox Code Playgroud)
另外,假设我正在使用Align.LEFT(意味着文本被绘制在x,y原点的右侧)
那么正确的论点应该是什么(假设我不想使用固定数字)?
在我的自定义视图中,我使用的方法drawTextOnPath(...)在4.1之前不支持硬件加速.
所以我想添加一个if语句,在运行时检查当前的Android版本,如果此版本大于或等于4.1,则打开硬件加速.我的问题是我使用Android 4.0 SDK(这是我的最低版本)编译我的项目,所以我没有Build.VERSION_CODESAndroid 4.1.
虽然我的最低版本是4.0,但我应该用4.1编译我的项目吗?
我有一个扩展Android ScrollView的自定义视图.直接子项是一种相对布局,其中包含可单击的子项.我希望能够:
到目前为止我尝试的是(伪代码):
public class CustomView extends ScrollView {
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return super.onInterceptTouchEvent(ev) || mScaleDetector.onTouchEvent(ev);
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
return mScaleDetector.onTouchEvent(ev);
}
private class ScaleListener extends
ScaleGestureDetector.SimpleOnScaleGestureListener {
@Override
public boolean onScale(ScaleGestureDetector detector) {
// Handle the scale..
return true;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我还尝试了onInterceptMethod的不同配置,例如首先调用super并返回mScaleDetector.onTouchEvent等等.
我成功拦截了比例或点击和滚动,但不是两者.
谢谢,丹尼尔