Я запускаю деятельность, которая содержит два фрагмента. Первый фрагмент работает отлично, но второй вызывает исключение inflateException, и я не уверен, почему. Я знаю, что это второй фрагмент, потому что, когда я вырезал его из XML-файла активности, программа работает без ошибок.android - inflaterException in fragment
Я разместил ниже код для фрагмента, его XML-файл и текст logcat. Любая помощь будет высоко оценена.
Фрагмент:
package com.example.chris.drawingtest;
import android.app.Activity;
import android.app.Fragment;
import android.content.DialogInterface;
import android.nfc.Tag;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageButton;
import com.example.chris.drawingtest.R;
/**
* Created by Chris on 11/28/2014.
*/
public class ToolbarFragment extends Fragment {
ToolSelectionListener mCallback;
public interface ToolSelectionListener {
public void sendNewValue(int newValue);
}
public void clicked(ImageButton imageButton) {
mCallback.sendNewValue(imageButton.getId());
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Log.d("Toolbar Inflation", "Inflating ToolbarFragment...");
return inflater.inflate(R.layout.fragment_toolbar, container, false);
}
private ImageButton pencilButton = (ImageButton) getActivity().findViewById(R.id.pencil);
private ImageButton eraserButton = (ImageButton) getActivity().findViewById(R.id.eraser);
}
Фрагмент:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_gravity="bottom|left"
android:orientation="horizontal"
>
<ImageButton
android:id="@+id/pencil"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="left"
android:background="@drawable/pencil"
/>
<ImageButton
android:id="@+id/eraser"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="center"
android:background="@drawable/eraser"
/>
</LinearLayout>
Logcat:
12-01 07:49:27.788 7171-7171/com.example.chris.drawingtest D/dalvikvm﹕ Late-enabling CheckJNI
12-01 07:49:27.828 7171-7171/com.example.chris.drawingtest W/ActivityThread﹕ Application com.example.chris.drawingtest is waiting for the debugger on port 8100...
12-01 07:49:27.838 7171-7171/com.example.chris.drawingtest I/System.out﹕ Sending WAIT chunk
12-01 07:49:27.838 7171-7177/com.example.chris.drawingtest I/dalvikvm﹕ Debugger is active
12-01 07:49:28.038 7171-7171/com.example.chris.drawingtest I/System.out﹕ Debugger has connected
12-01 07:49:28.038 7171-7171/com.example.chris.drawingtest I/System.out﹕ waiting for debugger to settle...
12-01 07:49:28.238 7171-7171/com.example.chris.drawingtest I/System.out﹕ waiting for debugger to settle...
12-01 07:49:28.438 7171-7171/com.example.chris.drawingtest I/System.out﹕ waiting for debugger to settle...
12-01 07:49:28.649 7171-7171/com.example.chris.drawingtest I/System.out﹕ waiting for debugger to settle...
12-01 07:49:28.839 7171-7171/com.example.chris.drawingtest I/System.out﹕ waiting for debugger to settle...
12-01 07:49:29.049 7171-7171/com.example.chris.drawingtest I/System.out﹕ waiting for debugger to settle...
12-01 07:49:29.249 7171-7171/com.example.chris.drawingtest I/System.out﹕ waiting for debugger to settle...
12-01 07:49:29.449 7171-7171/com.example.chris.drawingtest I/System.out﹕ debugger has settled (1410)
12-01 07:49:29.580 7171-7171/com.example.chris.drawingtest D/AndroidRuntime﹕ Shutting down VM
12-01 07:49:29.580 7171-7171/com.example.chris.drawingtest W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x4158dba8)
12-01 07:49:29.600 7171-7171/com.example.chris.drawingtest E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.chris.drawingtest, PID: 7171
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.chris.drawingtest/com.example.chris.drawingtest.DrawingActivity}: android.view.InflateException: Binary XML file line #21: Error inflating class fragment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
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:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #21: Error inflating class fragment
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)
at android.app.Activity.setContentView(Activity.java:1929)
at com.example.chris.drawingtest.DrawingActivity.onCreate(DrawingActivity.java:18)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
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:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.example.chris.drawingtest.ToolbarFragment.<init>(ToolbarFragment.java:43)
at java.lang.Class.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1208)
at android.app.Fragment.instantiate(Fragment.java:590)
at android.app.Fragment.instantiate(Fragment.java:561)
at android.app.Activity.onCreateView(Activity.java:4778)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)
at android.app.Activity.setContentView(Activity.java:1929)
at com.example.chris.drawingtest.DrawingActivity.onCreate(DrawingActivity.java:18)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
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:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Это было решением. Спасибо. – user2828965
добро пожаловать – Blackbelt
Использование контекста принимается в onAttach() и использовать его другими способами. Потому что при вызове getActivity() каждый раз потребляет время. – Charan