簡體   English   中英

無法轉換為 android.widget.RelativeLayout

[英]cannot be cast to android.widget.RelativeLayout

package com.example.caneraydin.myapplication;

import android.annotation.SuppressLint;
import android.content.ClipData;
import android.graphics.drawable.Drawable;
import android.media.Image;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.DragEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;

public class MainActivity extends AppCompatActivity   {

    private ImageView img1,img2,img3;
String TAG = "Chic";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_lands);
        img1 = (ImageView) findViewById(R.id.img1);
        img2= (ImageView) findViewById(R.id.img2);
        img3= (ImageView) findViewById(R.id.img3);

       img3. setOnTouchListener(new MyTouchListener());
img2. setOnDragListener(new MyDragListener());
    }



}
 final class MyTouchListener implements View.OnTouchListener {String TAG = "Chic";
    // Log.d(TAG,"In mytouchlistener");
    public boolean onTouch(View view, MotionEvent motionEvent) {
        Log.d(TAG,"In mytouchlistener");
        if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
            Log.d(TAG,"In mytouchlistener if yes");
            ClipData data = ClipData.newPlainText("", "");
            View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
            view.startDrag(data, shadowBuilder, view, 0);
          //  view.setVisibility(View.INVISIBLE);
            return true;
        } else {
            return false;
        }
    }
}


class MyDragListener implements View.OnDragListener {

    String TAG = "Chic";
    @Override
    public boolean onDrag(View v, DragEvent event) {
        int action = event.getAction();
        switch (event.getAction()) {
            case DragEvent.ACTION_DRAG_STARTED:
                // do nothing

                Log.d(TAG,"drag startedr");
                break;
            case DragEvent.ACTION_DROP: Log.d(TAG,"drag drop");
                // Dropped, reassign View to ViewGroup
                View view = (View) event.getLocalState();
                ViewGroup owner = (ViewGroup) view.getParent();
                owner.removeView(view);
                RelativeLayout container = (RelativeLayout) v;
                container.addView(view);
            //    view.setVisibility(View.VISIBLE);
                break;
            case DragEvent.ACTION_DRAG_ENDED: Log.d(TAG,"drag ended");

            default:
                break;
        }
        return true;
    }
}

我有 3 個圖像視圖。 當一個人繼續另一個圖像視圖時,它應該給出消息。 但即使我不能刪除圖像視圖。 當我下降時,它會回到第一位。

它不能進入​​ action.drop 部分。 當我按照我的描述將圖像拖放到另一個圖像時,它會關閉並顯示消息:

   java.io.IOException: fcntl failed: EAGAIN (Try again)
                                                                     at java.nio.FileChannelImpl.basicLock(FileChannelImpl.java:123)
                                                                     at java.nio.FileChannelImpl.tryLock(FileChannelImpl.java:177)
                                                                     at java.nio.channels.FileChannel.tryLock(FileChannel.java:587)
                                                                     at com.facebook.analytics.reporters.AppStateReporter.a(AppStateReporter.java:141)
                                                                     at com.facebook.analytics.reporters.AppStateReporter.c(AppStateReporter.java:94)
                                                                     at com.facebook.analytics.reporters.AppStateReporter.a(AppStateReporter.java:55)
                                                                     at com.facebook.common.noncriticalinit.NonCriticalInitializer.a(NonCriticalInitializer.java:103)
                                                                     at com.facebook.common.noncriticalinit.NonCriticalInitializer$2.run(NonCriticalInitializer.java:116)
                                                                     at com.facebook.common.appchoreographer.DefaultAppChoreographer$5.run(DefaultAppChoreographer.java:384)
                                                                     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
                                                                     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                                     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
                                                                     at com.facebook.common.executors.WrappingExecutorService$1.run(WrappingExecutorService.java:77)
                                                                     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
                                                                     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                                     at com.facebook.common.executors.DefaultConstrainedListeningExecutorService$Worker.run(DefaultConstrainedListeningExecutorService.java:327)
                                                                     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
                                                                     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
                                                                     at com.facebook.common.executors.NamedThreadFactory$1.run(NamedThreadFactory.java:42)
                                                                     at java.lang.Thread.run(Thread.java:841)
                                                                  Caused by: libcore.io.ErrnoException: fcntl failed: EAGAIN (Try again)
                                                                     at libcore.io.Posix.fcntlFlock(Native Method)
                                                                     at libcore.io.ForwardingOs.fcntlFlock(ForwardingOs.java:54)
                                                                     at java.nio.FileChannelImpl.basicLock(FileChannelImpl.java:121)
                                                                     at java.nio.FileChannelImpl.tryLock(FileChannelImpl.java:177) 
                                                                     at java.nio.channels.FileChannel.tryLock(FileChannel.java:587) 
                                                                     at com.facebook.analytics.reporters.AppStateReporter.a(AppStateReporter.java:141) 
                                                                     at com.facebook.analytics.reporters.AppStateReporter.c(AppStateReporter.java:94) 
                                                                     at com.facebook.analytics.reporters.AppStateReporter.a(AppStateReporter.java:55) 
                                                                     at com.facebook.common.noncriticalinit.NonCriticalInitializer.a(NonCriticalInitializer.java:103) 
                                                                     at com.facebook.common.noncriticalinit.NonCriticalInitializer$2.run(NonCriticalInitializer.java:116) 
                                                                     at com.facebook.common.appchoreographer.DefaultAppChoreographer$5.run(DefaultAppChoreographer.java:384) 
                                                                     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422) 
                                                                     at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
                                                                     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422) 
                                                                     at com.facebook.common.executors.WrappingExecutorService$1.run(WrappingExecutorService.java:77) 
                                                                     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422) 
                                                                     at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
                                                                     at com.facebook.common.executors.DefaultConstrainedListeningExecutorService$Worker.run(DefaultConstrainedListeningExecutorService.java:327) 
                                                                     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
                                                                     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
                                                                     at com.facebook.common.executors.NamedThreadFactory$1.run(NamedThreadFactory.java:42) 
                                                                     at java.lang.Thread.run(Thread.java:841) 
03-28 16:12:56.569 157-376/? E/cutils: Failed to mkdirat(/storage/extSdCard/Android): Read-only file system
03-28 16:12:56.589 157-376/? E/cutils: Failed to mkdirat(/storage/extSdCard/Android): Read-only file system
03-28 16:12:57.109 25075-13896/? E/fb4a(:<default>):VaultDeviceSetup: setupDeviceFromServer
                                                                      com.facebook.proxygen.HttpNetworkException: connect failed (immediately): errno = 101
                                                                          at com.facebook.proxygen.LigerHttpResponseHandler.handleError(LigerHttpResponseHandler.java:244)
                                                                          at com.facebook.proxygen.LigerHttpResponseHandler.onError(LigerHttpResponseHandler.java:209)
                                                                          at com.facebook.proxygen.JniHandler.onError(JniHandler.java:106)
                                                                          at com.facebook.proxygen.EventBase.loopForever(Native Method)
                                                                          at com.facebook.proxygen.HTTPThread.run(HTTPThread.java:32)
                                                                          at java.lang.Thread.run(Thread.java:841)
03-28 16:12:58.080 157-376/? E/cutils: Failed to mkdirat(/storage/extSdCard/Android): Read-only file system
03-28 16:12:58.090 157-376/? E/cutils: Failed to mkdirat(/storage/extSdCard/Android): Read-only file system
03-28 16:12:58.090 157-376/? E/cutils: Failed to mkdirat(/storage/extSdCard/Android): Read-only file system
03-28 16:12:58.100 157-376/? E/cutils: Failed to mkdirat(/storage/extSdCard/Android): Read-only file system
03-28 16:12:58.541 978-978/? E/NetworkScheduler.SchedulerReceiver: Invalid parameter app
03-28 16:12:58.541 978-978/? E/NetworkScheduler.SchedulerReceiver: Invalid package name : Perhaps you didn't include a PendingIntent in the extras?
03-28 16:13:10.763 589-864/? E/Watchdog: !@Sync 6168
03-28 16:13:19.091 13687-13687/com.example.caneraydin.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                      Process: com.example.caneraydin.myapplication, PID: 13687
                                                                                      java.lang.ClassCastException: android.support.v7.widget.AppCompatImageView cannot be cast to android.widget.RelativeLayout
                                                                                          at com.example.caneraydin.myapplication.MyDragListener.onDrag(MainActivity.java:74)
                                                                                          at android.view.View.dispatchDragEvent(View.java:17624)
                                                                                          at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1288)
                                                                                          at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1288)
                                                                                          at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1288)
                                                                                          at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1288)
                                                                                          at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1288)
                                                                                          at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1288)
                                                                                          at android.view.ViewRootImpl.handleDragEvent(ViewRootImpl.java:5250)
                                                                                          at android.view.ViewRootImpl.access$900(ViewRootImpl.java:115)
                                                                                          at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:3462)
                                                                                          at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                          at android.os.Looper.loop(Looper.java:136)
                                                                                          at android.app.ActivityThread.main(ActivityThread.java:5584)
                                                                                          at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                          at java.lang.reflect.Method.invoke(Method.java:515)
                                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
                                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
                                                                                          at dalvik.system.NativeStart.main(Native Method)
03-28 16:13:19.431 589-14357/? E/android.os.Debug: !@Dumpstate > sdumpstate -k -t -z -d -m 13687 -o /data/log/dumpstate_app_error
03-28 16:13:20.192 14380-14380/? E/dalvikvm: Could not find class 'android.app.job.JobScheduler', referenced from method com.android.email.service.r.a
03-28 16:13:20.192 14380-14380/? E/dalvikvm: Could not find class 'android.app.job.JobScheduler', referenced from method com.android.email.service.r.b
03-28 16:13:20.793 14380-14426/? E/Gmail: Error finding the version of the Email provider.....
                                          android.content.pm.PackageManager$NameNotFoundException: com.google.android.email
                                              at android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:124)
                                              at com.google.android.gm.EmailMigrationService.a(SourceFile:1280)
                                              at com.google.android.gm.EmailMigrationService.onHandleIntent(SourceFile:219)
                                              at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
                                              at android.os.Handler.dispatchMessage(Handler.java:102)
                                              at android.os.Looper.loop(Looper.java:136)
                                              at android.os.HandlerThread.run(HandlerThread.java:61)
03-28 16:13:22.805 1810-1810/? E/SamsungIME:          isHWKeyboardConnected() = false --> false
03-28 16:13:22.885 589-589/? E/Tethering: No numeric data
03-28 16:13:24.756 589-697/? E/ViewRootImpl: sendUserActionEvent() mView == null
03-28 16:13:24.766 589-2654/? E/JavaBinder: !!! FAILED BINDER TRANSACTION !!!
03-28 16:13:24.766 589-2654/? E/JavaBinder: !!! FAILED BINDER TRANSACTION !!!
03-28 16:13:24.766 1810-1810/? E/JavaBinder: !!! FAILED BINDER TRANSACTION !!!
03-28 16:13:24.766 1810-1810/? E/JavaBinder: !!! FAILED BINDER TRANSACTION !!!
03-28 16:13:24.816 589-715/? E/InputDispatcher: channel ~ Channel is unrecoverably broken and will be disposed!
03-28 16:13:40.772 589-864/? E/Watchdog: !@Sync 6169

這是我的 xml(橫向)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"


    tools:context="com.example.caneraydin.myapplication.MainActivity">


<ImageView
    android:layout_width="140dp"
    android:layout_height="140dp"
    android:src="@drawable/b3_1"
    android:layout_alignParentLeft="true"
    android:layout_centerInParent="true"
    android:id="@+id/img3"
    />



    <ImageView
        android:layout_width="140dp"
        android:layout_height="140dp"
        android:src="@drawable/b2_5"

        android:id="@+id/img2"
        android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
        />

    <ImageView
        android:layout_width="140dp"
        android:layout_height="140dp"
        android:src="@drawable/b3_2"
android:layout_alignRight="@id/img2"
       android:layout_above="@id/img2"
        android:id="@+id/img1"
android:layout_alignParentBottom="true"

         />

</RelativeLayout>

由於您在ImageView img2 上設置 OnDragListener,因此View v

public boolean onDrag(View v, DragEvent event) {

ImageView類型; 所以問題是你試圖在此處將ImageView轉換為RelativeLayout

RelativeLayout container = (RelativeLayout) v;

您應該檢查v是否是您期望的RelativeLayout實例。 並且您應該為該RelativeLayout實例設置拖動偵聽器。 拖放是這樣工作的; 您應該為拖動的對象和放置目標設置偵聽器。

myRelativeLayoutInstance.setOnDragListener(new MyDragListener());

和聽眾:

class MyDragListener implements View.OnDragListener {

    String TAG = "Chic";
    @Override
    public boolean onDrag(View v, DragEvent event) {
        int action = event.getAction();
        switch (event.getAction()) {
            case DragEvent.ACTION_DRAG_STARTED:
                // do nothing

                Log.d(TAG,"drag startedr");
                break;
            case DragEvent.ACTION_DROP: Log.d(TAG,"drag drop");
                if(v == myRelativeLayoutInstance) {
                    // Dropped, reassign View to ViewGroup
                    View view = (View) event.getLocalState();
                    ViewGroup owner = (ViewGroup) view.getParent();
                    owner.removeView(view);
                    RelativeLayout container = (RelativeLayout) v;
                    container.addView(view);
                }
                break;
            case DragEvent.ACTION_DRAG_ENDED: Log.d(TAG,"drag ended");

            default:
                break;
        }
        return true;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM