我在安装Action Bar Sherlock后尝试在主页上使用仪表板片段。我收到了错误:
“填充类片段错误”
我已将Action Bar Sherlock安装为库项目。这是XAML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Fragment
class="myVirtualHealthCheck.com.Android.fragments.DashboardFragment"
android:layout_width="fill_parent"
android:layout_height="0dip"/>
</LinearLayout>
aMainMenu.java
package myVirtualHealthCheck.com.Android.ui;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URI;
import myVirtualHealthCheck.com.Android.R;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
public class aMainMenu extends FragmentActivity{
DashboardFragment.java:
package myVirtualHealthCheck.com.Android.fragments;
import myVirtualHealthCheck.com.Android.R;
import myVirtualHealthCheck.com.Android.ui.aNutritionLookup;
import myVirtualHealthCheck.com.Android.ui.aPlaces;
import myVirtualHealthCheck.com.Android.ui.aVitalAdd;
import myVirtualHealthCheck.com.Android.ui.aVitalsMy;
import myVirtualHealthCheck.com.Android.utils.AnalyticsUtils;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class DashboardFragment extends Fragment {
public void fireTrackerEvent(String label) {
AnalyticsUtils.getInstance(getActivity()).trackEvent("Home Screen Dashboard", "Click", label, 0);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_dashboard, container);
// MY VITALS *CLICK*
root.findViewById(R.id.btnVitalsMy).setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
fireTrackerEvent("VitalsMy");
startActivity(new Intent(getActivity(), aVitalsMy.class));
}
});
// ADD VITAL *CLICK*
root.findViewById(R.id.btnVitalAdd).setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
fireTrackerEvent("VitalAdd");
startActivity(new Intent(getActivity(), aVitalAdd.class));
}
});
// NUTRITION *CLICK*
root.findViewById(R.id.btnNutrition).setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
fireTrackerEvent("NutritionLookup");
startActivity(new Intent(getActivity(), aNutritionLookup.class));
}
});
// PLACES *CLICK*
root.findViewById(R.id.btnPlaces).setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
fireTrackerEvent("Places");
startActivity(new Intent(getActivity(), aPlaces.class));
}
});
// TWITTER *CLICK*
root.findViewById(R.id.btnTwitter).setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
fireTrackerEvent("Twitter");
startActivity(new Intent("android.intent.action.VIEW", Uri.parse("http://twitter.com/#!/WellnessCheck")));
}
});
// Facebook *CLICK*
root.findViewById(R.id.btnFacebook).setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
fireTrackerEvent("Facebook");
startActivity(new Intent("android.intent.action.VIEW", Uri.parse("http://www.facebook.com/myvhc")));
}
});
return root;
}
}
这是logcat:
02-01 08:53:01.014: W/dalvikvm(8023): threadid=1: thread exiting with uncaught exception (group=0x40020950)
02-01 08:53:01.114: E/AndroidRuntime(8023): FATAL EXCEPTION: main
02-01 08:53:01.114: E/AndroidRuntime(8023): java.lang.RuntimeException: Unable to start activity ComponentInfo{myVirtualHealthCheck.com.Android/myVirtualHealthCheck.com.Android.ui.aMainMenu}: android.view.InflateException: Binary XML file line #8: Error inflating class Fragment
02-01 08:53:01.114: E/AndroidRuntime(8023): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
02-01 08:53:01.114: E/AndroidRuntime(8023): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
02-01 08:53:01.114: E/AndroidRuntime(8023): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
02-01 08:53:01.114: E/AndroidRuntime(8023): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
02-01 08:53:01.114: E/AndroidRuntime(8023): at android.os.Handler.dispatchMessage(Handler.java:99)
02-01 08:53:01.114: E/AndroidRuntime(8023): at android.os.Looper.loop(Looper.java:123)
02-01 08:53:01.114: E/AndroidRuntime(8023): at android.app.ActivityThread.main(ActivityThread.java:4627)
02-01 08:53:01.114: E/AndroidRuntime(8023): at java.lang.reflect.Method.invokeNative(Native Method)
02-01 08:53:01.114: E/AndroidRuntime(8023): at java.lang.reflect.Method.invoke(Method.java:521)
02-01 08:53:01.114: E/AndroidRuntime(8023): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:893)
02-01 08:53:01.114: E/AndroidRuntime(8023): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:651)
02-01 08:53:01.114: E/AndroidRuntime(8023): at dalvik.system.NativeStart.main(Native Method)
02-01 08:53:01.114: E/AndroidRuntime(8023): Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class Fragment
02-01 08:53:01.114: E/AndroidRuntime(8023): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:576)
02-01 08:53:01.114: E/AndroidRuntime(8023): at android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
02-01 08:53:01.114: E/AndroidRuntime(8023): at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
02-01 08:53:01.114: E/AndroidRuntime(8023): at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
02-01 08:53:01.114: E/AndroidRuntime(8023): at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
02-01 08:53:01.114: E/AndroidRuntime(8023): at android.support.v4.app.FragmentActivity.setContentView(FragmentActivity.java:421)
02-01 08:53:01.114: E/AndroidRuntime(8023): at myVirtualHealthCheck.com.Android.ui.aMainMenu.onCreate(aMainMenu.java:32)
02-01 08:53:01.114: E/AndroidRuntime(8023): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
02-01 08:53:01.114: E/AndroidRuntime(8023): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
02-01 08:53:01.114: E/AndroidRuntime(8023): ... 11 more
02-01 08:53:01.114: E/AndroidRuntime(8023): Caused by: java.lang.ClassNotFoundException: android.view.Fragment in loader dalvik.system.PathClassLoader[/data/app/myVirtualHealthCheck.com.Android-1.apk]
02-01 08:53:01.114: E/AndroidRuntime(8023): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
02-01 08:53:01.114: E/AndroidRuntime(8023): at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
02-01 08:53:01.114: E/AndroidRuntime(8023): at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
02-01 08:53:01.114: E/AndroidRuntime(8023): at android.view.LayoutInflater.createView(LayoutInflater.java:466)
02-01 08:53:01.114: E/AndroidRuntime(8023): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:544)
02-01 08:53:01.114: E/AndroidRuntime(8023): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66)
02-01 08:53:01.114: E/AndroidRuntime(8023): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)
02-01 08:53:01.114: E/AndroidRuntime(8023): ... 19 more
答案 0 :(得分:1)
解决方案:使用小写的“
f
”(即<fragment
..非<Fragment
...)
所以我将<Fragment>
更改为<fragment>
。