Ошибка надувания класса ja.burhanrashid52.photoeditor.PhotoEditorView - PullRequest
0 голосов
/ 09 октября 2019

В настоящее время я занимаюсь разработкой приложения для Android с использованием библиотеки PhotoEditor . Я следовал разделам Getting Started и Setting up the View, как описано на странице. Тем не менее, почему-то я не могу надуть UI XML, который содержит PhotoEditorView. Вот мой код:

XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/transparent">

        <ja.burhanrashid52.photoeditor.PhotoEditorView
            android:id="@+id/photoEditorView"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
        </ja.burhanrashid52.photoeditor.PhotoEditorView>

</RelativeLayout>

Фрагмент:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    try {
        final View view = inflater.inflate(R.layout.app_fragment_edit_picture, container, false);
    }
    catch (Exception e) {
        LogHelper.LogError("TEST");
    }

    return null;
}

Я положил try-catch и return null только для тестирования.

Ошибка:

Строка двоичного файла XML №9: Строка двоичного файла XML №9: Ошибка надувания класса ja.burhanrashid52.photoeditor.PhotoEditorView

Кто-нибудьесть подсказка?

По запросу, вот полная трассировка стека:

android.view.InflateException: строка двоичного файла XML №9: строка двоичного файла XML №9: ошибкараздувает класс ja.burhanrashid52.photoeditor.PhotoEditorView на android.view.LayoutInflater.inflate (LayoutInflater.java:539) на android.view.LayoutInflater.inflate (LayoutInflater.java:423) на com.mobileop.app.gui.fragments. EditPictureFragment.onCreateView (EditPictureFragment.java:54) в android.support.v4.app.Fragment.performCreateView (Fragment.java:2439) в android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.jroid:14).support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState (FragmentManager.java:1784) в android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1852) в android.support.v4.app.BackStackRecord.executeOps (BackStackRecord.jroid.su at.80).v4.app. : 2366) в android.support.v4.app.FragmentManagerImpl.execPendingActions (FragmentManager.java:2273) в android.support.v4.app.FragmentManagerImpl.dispatchStateChange (FragmentManager.java:3273) в android.support. FragmentManagerImpl.dispatchActivityCreated (FragmentManager.java:3229) в android.support.v4.app.Fragment.performActivityCreated (Fragment.java:2466) в android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager).support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState (FragmentManager.java:1784) в android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1852) в android.support.v4.app.BackStackRecord.executeOps (BackStackRecord.jroid.suort.80).v4.app. : 2366) в android.support.v4.app.FragmentManagerImpl.execPendingActions (FragmentManager.java:2273) в android.support.v4.app.FragmentManagerImpl $ 1.run (FragmentManager.java:733) в android.os.Handback.handCall(Handler.java:739) на android.os.Handler.dispatchMessage (Handler.java:95) на android.os.Looper.loop (Looper.java:148) на android.app.ActivityThread.main (ActivityThread.java:5551) на java.lang.reflect.Method.invoke (собственный метод) на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:730) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:620) Причина: android.view.InflateException: строка двоичного файла XML # 9: ошибка надувания класса ja.burhanrashid52.photoeditor.PhotoEditorПросмотреть на android.view.LayoutInflater.createView (LayoutInflater.java:645) при android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:764) при android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:704) в android.view.LayoutInflater.rInflate (LayoutInflater.java:835) вandroid.view.LayoutInflater.rInflateChildren (LayoutInflater.java:798) в android.view.LayoutInflater.inflate (LayoutInflater.java:515) ... еще 30 причин: java.lang.reflect.InvocationTargetException в java.lang.ref.Constructor.newInstance (собственный метод) в android.view.LayoutInflater.createView (LayoutInflater.java:619) ... еще 35. Причина: java.lang.NoClassDefFoundError: Ошибка разрешения: Lja / burhanrashid52 / photoeditor / R $ styleable;в ja.burhanrashid52.photoeditor.PhotoEditorView.init (PhotoEditorView.java:72) в ja.burhanrashid52.photoeditor.PhotoEditorView. (PhotoEditorView.java:48) ... еще 37 причин: java.lang.ClassNotFoundException: не былонайти класс «ja.burhanrashid52.photoeditor.R $ styleable» по пути: DexPathList [[zip-файл »/data/app/com.mobileop-1/base.apk"],nativeLibraryDirectories=[/data/app/com.mobileop-1 / lib / arm, / vendor / lib, / system / lib]] в dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:56) в java.lang.ClassLoader.loadClass (ClassLoader.java:511) в java.lang.ClassLoader.loadClass (ClassLoader.java:469) ... еще 39 Подавлено: java.lang.ClassNotFoundException: ja.burhanrashid52.photoeditor.R $ styleable в java.lang.Class.classForName (собственный метод) в java. lang.BootClassLoader.findClass (ClassLoader.java:781) в java.lang.BootClassLoader.loadClass (ClassLoader.java:841) в java.lang.ClassLoader.loadClass (ClassLoader.java:504) ... еще 40 причин:java.lang.NoClassDefFoundError: Class не найден с помощью загрузчика класса загрузки;трассировка стека недоступна

Ответы [ 2 ]

1 голос
/ 09 октября 2019

Обновление

Весь код с Main, фрагментом xmls и классами.

MainActivity XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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"
tools:context=".MainActivity">

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/fragmentContainer"/>

</LinearLayout>

MainActivity Java

import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;


public class PhotoEditorActivity extends AppCompatActivity {
FragmentManager fragManager;
FragmentTransaction fragTransaction;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_photo_editor);

    fragManager=getFragmentManager();
    fragManager.findFragmentById(R.id.fragmentContainer);
    fragTransaction=fragManager.beginTransaction();
    fragTransaction.replace(R.id.fragmentContainer, new PhotoEditorFragment());
    fragTransaction.commit();

}
}

Фрагмент XML

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

<ja.burhanrashid52.photoeditor.PhotoEditorView
    android:id="@+id/photoEditorView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
</ja.burhanrashid52.photoeditor.PhotoEditorView>

</RelativeLayout>

Фрагмент Java

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class PhotoEditorFragment extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle 
savedInstanceState) {
    View itemView=inflater.inflate(R.layout.photo_editor_fragment,container,false);
    try
    {
        return itemView;}
    catch (Exception e){
        return null;
    }

}
}

Этот код отлично работает на моей андроид студии. Я не импортировал банку, но добавил зависимость в gradle

dependencies {
    implementation 'ja.burhanrashid52:photoeditor:0.4.0'
}
1 голос
/ 09 октября 2019

Вы должны вернуть View, вы возвращаете null в функции.

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle 
savedInstanceState) {
// Inflate the layout for this fragment
try {
    final View view = inflater.inflate(R.layout.app_fragment_edit_picture, container, 
false);
}
catch (Exception e) {
    LogHelper.LogError("TEST");
}

return view;
}
...