android - fragment - 实例化异常 : no empty Constructor -> Google Maps v2?

标签 android constructor fragment instantiationexception

当我通过 App-Change 按钮再次打开已关闭的应用时,我收到此错误消息:

Caused by: java.lang.InstantiationException: can't instantiate class com.*.FragmentContact$1; no empty constructor

我发现了一些关于内部类的技巧,以及使它们成为静态等。但是这个 FragmentContact 是 *.java-file 中的一个 public 类,并且 < strong>有一个公共(public)的空构造函数。 我在这个项目中使用 Google Maps Api v2 并从互联网的某个地方做一个技巧来设置我的 MapView。看这里:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_contact, null);

    try {
        MapsInitializer.initialize(this.getActivity().getApplicationContext());
    } catch (GooglePlayServicesNotAvailableException e) {
        e.printStackTrace();
    }

    fragment = new SupportMapFragment() {
        @Override
        public void onActivityCreated(Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
            mMap = fragment.getMap();
            if (mMap != null) {
                setupMap();
            }
        }
    };

    getFragmentManager().beginTransaction().replace(R.id.fragment_orte_map_parent, fragment).commit();

    return v;
}

当我剪掉这个 MapView 的东西时,一切正常。也许有人可以解释我做错了什么。

我的完整 Stacktrace:

FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.*/com.*.MainActivity}: android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment com.*.FragmentContact$1: make sure class name exists, is public, and has an empty constructor that is public
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2357)
   at android.app.ActivityThread.access$600(ActivityThread.java:153)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247)
   at android.os.Handler.dispatchMessage(Handler.java:99)
   at android.os.Looper.loop(Looper.java:137)
   at android.app.ActivityThread.main(ActivityThread.java:5226)
   at java.lang.reflect.Method.invokeNative(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:511)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
   at dalvik.system.NativeStart.main(Native Method)
Caused by: android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment com.*.FragmentContact$1: make sure class name exists, is public, and has an empty constructor that is public
   at android.support.v4.app.Fragment.instantiate(Fragment.java:405)
   at android.support.v4.app.FragmentState.instantiate(Fragment.java:97)
   at android.support.v4.app.FragmentManagerImpl.restoreAllState(FragmentManager.java:1767)
   at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:208)
   at com.*.MainActivity.onCreate(MainActivity.java:20)
   at android.app.Activity.performCreate(Activity.java:5104)
   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2261)
   ... 11 more
Caused by: java.lang.InstantiationException: can't instantiate class com.*.FragmentContact$1; no empty constructor
   at java.lang.Class.newInstanceImpl(Native Method)
   at java.lang.Class.newInstance(Class.java:1319)
   at android.support.v4.app.Fragment.instantiate(Fragment.java:394)
   ... 18 more

最佳答案

But these FragmentContact is a public class in a *.java-file and has a public empty constructor.

该错误不是在提示 FragmentContact。它提示FragmentContact 的第一个内部类(FragmentContact$1)。您不能将 Fragment 实现为任何东西的内部类,因为它不能从外部类外部实例化。 static 内部类就可以了。

关于android - fragment - 实例化异常 : no empty Constructor -> Google Maps v2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16062923/

相关文章:

java - 了解 NoSuchMethod 异常中的方法签名

c++ - 在 C++ 中从 C dll 生成对象

导致 : IllegalStateException: Can not perform this action after onSaveInstanceState 的 Android fragment 和方向更改

android - fragment 相互重叠

java - Android 条码扫描仪仅读取条码

android - 如何在未连接到调试器时调试 android 崩溃

来自其他文件的 C++ 初始化程序列表

android - 为什么我的 Android 应用程序会耗尽电池电量?

java - 由于应用程序兼容,Searchview 不起作用

android - Android Spinner未填充| Android Kotlin