Новое занятие не соприкасается до подъема пальцевошибка: событие удаления из-за отсутствия фокуса окна: MotionEvent - PullRequest
0 голосов
/ 24 декабря 2018

Мое первое действие (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();
    }

}
...