Мое первое действие (MainActivity) открывает новое действие после долгого щелчка, и второе действие должно быть завершено, когда пользователь поднимает палец.Моя проблема в том, что первое действие все еще получает прикосновение вместо второго, и я получаю эту ошибку:
Независимо от того, как я пытаюсь использовать второй экран (макет, новый фрагмент, новое действие ...) вид снизу прикасается (утилита перемотки на MainActivity все еще прокручивается), а новый макет не прикасается.после того, как пользователь поднял палец, вторая активность / фрагмент начинают отслеживать события.
[MainActivity]: событие удаления из-за отсутствия фокуса окна: MotionEvent {action = ACTION_MOVE, actionButton = 0, id [0] =0, x [0] = 292,53247, y [0] = 1557,9918, toolType [0] = TOOL_TYPE_FINGER, buttonState = 0, metaState = 0, flags = 0x0, edgeFlags = 0x0, pointerCount = 1, historySize = 2, eventTime = 880322463, downTime = 880302619, deviceId = 9, source = 0x1002}
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/group_drag_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:id="@+id/drag_blur"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:clickable="false"
android:focusable="false"
android:visibility="gone"></FrameLayout>
</FrameLayout>
вторая активность:
public class GroupDragForArchive extends BaseActivity {
@BindView(R2.id.group_drag_layout)
FrameLayout frameLayout;
@BindView(R2.id.drag_blur)
FrameLayout dragBlur;
private static final String DEBUG_TAG = "Gestures";
private Bitmap bitmap;
@Override
protected int getLayoutId() {
return R.layout.group_drag_for_archive_layout;
}
@Override
public boolean shouldBeLoggedInForActivity() {
return true;
}
@Override
public boolean shouldPollInActivity() {
return false;
}
@Override
protected void onCreated(Bundle savedInstanceState) {
}
public static void startActivity(Activity activity, Bitmap imageFile) {
Intent intent = new Intent(activity, GroupDragForArchive.class);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
imageFile.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
intent.putExtra("BitmapImage", byteArray);
activity.overridePendingTransition(0, 0);
activity.startActivityForResult(intent, IntConst.RequestCodes.REQUEST_DRAG_FOR_ARCHIVE);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
byte[] byteArray = getIntent().getByteArrayExtra("BitmapImage");
bitmap = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
BitmapDrawable ob = new BitmapDrawable(getResources(), bitmap);
frameLayout.setBackgroundDrawable(ob);
this.getCurrentFocus();
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onDragGroupEvent(MotionEvent event) {
Log.d(DEBUG_TAG,"Action was onDragGroupEvent" + event);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int action = MotionEventCompat.getActionMasked(event);
switch(action) {
case (MotionEvent.ACTION_MOVE) :
Log.d(DEBUG_TAG,"Action was MOVE");
case (MotionEvent.ACTION_UP) :
case (MotionEvent.ACTION_CANCEL) :
Log.d(DEBUG_TAG,"Action was CANCEL");
finish();
case (MotionEvent.ACTION_OUTSIDE) :
Log.d(DEBUG_TAG,"Movement occurred outside bounds " +
"of current screen element");
default :
return false;
}
}
, и я открываю свою деятельность с этим кодом:
public void stopClick() {
try {
View v1 = mDrawerLayout.getRootView();
v1.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);
GroupDragForArchive.startActivity(this, bitmap);
} catch (Throwable e) {
e.printStackTrace();
}
}