마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

프래그먼트에 CustomDialog 띄우기 질문입니다!

0 추천
package com.duckcom.duckcal.Fragment;

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

import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.Fragment;

import com.duckcom.duckcal.R;

public class FragmentDialog extends DialogFragment {


    private Fragment fragment;

    public FragmentDialog() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.dialog, container, false);

        Bundle args = getArguments();
        String value = args.getString("key");

     
        fragment = getActivity().getSupportFragmentManager().findFragmentByTag("tag");

        if (fragment != null) {
            DialogFragment dialogFragment = (DialogFragment) fragment;
            dialogFragment.dismiss();
        }
        return view;
    }
}

FragmentDialog.java 입니다.

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="400dp"
        android:orientation="vertical"
        android:gravity="center">
        <TextView
            android:text="DialogFragment"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>
</layout>


<dialog.xml 입니다>

 

프래그먼트에서 커스텀 다이얼로그 띄우기를 하고 싶습니다.

인터넷에 있는 코드를 써서 실행했는데 아래와 같은 에러 로그가 뜹니다.

(라이브러리 에러는 빼고 적었습니다.)

at com.duckcom.duckcal.Fragment.FragmentDialog.onCreateView(FragmentDialog.java:23)

해당 코드도 붙입니다.

View view = inflater.inflate(R.layout.dialog, container, false);

대체 왜 에러가 나는 걸까요?

감사합니다.

 

<에러 로그 첨부합니다>

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.duckcom.duckcal, PID: 7296
    android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class layout
    Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class layout
    Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.layout" on path: DexPathList[[zip file "/data/app/com.duckcom.duckcal-sJgYoaUNC3hnyK4-R5m58A==/base.apk"],nativeLibraryDirectories=[/data/app/com.duckcom.duckcal-sJgYoaUNC3hnyK4-R5m58A==/lib/x86, /system/lib]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at android.view.LayoutInflater.createView(LayoutInflater.java:606)
        at android.view.LayoutInflater.onCreateView(LayoutInflater.java:703)
        at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:68)
        at android.view.LayoutInflater.onCreateView(LayoutInflater.java:720)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:788)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
        at com.duckcom.duckcal.Fragment.FragmentDialog.onCreateView(FragmentDialog.java:23)
        at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2600)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:881)
        at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1238)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1303)
        at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:439)
        at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManagerImpl.java:2079)
        at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1869)
        at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManagerImpl.java:1824)
        at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManagerImpl.java:1727)
        at androidx.fragment.app.FragmentManagerImpl$2.run(FragmentManagerImpl.java:150)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

hahasmilefck (120 포인트) 님이 2020년 5월 24일 질문
hahasmilefck님이 2020년 5월 24일 수정

1개의 답변

0 추천
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="match_parent"
	android:layout_height="400dp"
	android:orientation="vertical"
	android:gravity="center">
	<TextView
		android:text="DialogFragment"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content" />
</LinearLayout>

Dialog xml이 잘 못 된것 같네요. 위와 같이 고쳐 보세요.

디자이너정 (42,810 포인트) 님이 2020년 5월 25일 답변
...