2015-09-24 2 views
0

Я недавно изучил андроид. , и я попробовал использовать фрагмент, следуя моему учебнику , но я встретил ошибку, даже если я набрал коды точно так же, как и мой учебник.ClassCastException при использовании Фрагмента в Android

Можете ли вы, ребята, объяснить мне, что не так?

Это MainActivity.java

package com.example.ex_1; 

import android.app.Activity; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 
    public static class CounterFragment extends Fragment { 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
      // TODO Auto-generated method stub 

      View root = inflater.inflate(R.layout.counterfragment, container, false); 
      Button btnIncrease = (Button)root.findViewById(R.id.btnincrease); 
      final TextView textCounter = (TextView)root.findViewById(R.id.txtcounter); 
      btnIncrease.setOnClickListener(new Button.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        int count = Integer.parseInt(textCounter.getText().toString()); 
        textCounter.setText(Integer.toString(count + 1)); 
       } 

      }); 
      return root; 
     } 

    } 
} 

Это activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/LinearLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    tools:context="${relativePackage}.${activityClass}" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="~~"/> 
    <fragment 
     android:name="com.example.ex_1.MainActivity$CounterFragment" 
     android:id="@+id/counterfragment" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

</LinearLayout> 

И ошибка

09-24 07:40:08.329: E/AndroidRuntime(1794): FATAL EXCEPTION: main 
09-24 07:40:08.329: E/AndroidRuntime(1794): Process: com.example.ex_1, PID: 1794 
09-24 07:40:08.329: E/AndroidRuntime(1794): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.ex_1/com.example.ex_1.MainActivity}: android.view.InflateException: Binary XML file line #13: Error inflating class fragment 
09-24 07:40:08.329: E/AndroidRuntime(1794):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298) 
09-24 07:40:08.329: E/AndroidRuntime(1794):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
09-24 07:40:08.329: E/AndroidRuntime(1794):  at android.app.ActivityThread.access$800(ActivityThread.java:144) 
09-24 07:40:08.329: E/AndroidRuntime(1794):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
09-24 07:40:08.329: E/AndroidRuntime(1794):  at android.os.Handler.dispatchMessage(Handler.java:102) 
09-24 07:40:08.329: E/AndroidRuntime(1794):  at android.os.Looper.loop(Looper.java:135) 
09-24 07:40:08.329: E/AndroidRuntime(1794):  at android.app.ActivityThread.main(ActivityThread.java:5221) 
09-24 07:40:08.329: E/AndroidRuntime(1794):  at java.lang.reflect.Method.invoke(Native Method) 
09-24 07:40:08.329: E/AndroidRuntime(1794):  at java.lang.reflect.Method.invoke(Method.java:372) 
09-24 07:40:08.329: E/AndroidRuntime(1794):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
09-24 07:40:08.329: E/AndroidRuntime(1794):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
09-24 07:40:08.329: E/AndroidRuntime(1794): Caused by: android.view.InflateException: Binary XML file line #13: Error inflating class fragment 
09-24 07:40:08.329: E/AndroidRuntime(1794):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:763) 
09-24 07:40:08.329: E/AndroidRuntime(1794):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
09-24 07:40:08.329: E/AndroidRuntime(1794):  at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
09-24 07:40:08.329: E/AndroidRuntime(1794):  at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
09-24 07:40:08.329: E/AndroidRuntime(1794):  at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
09-24 07:40:08.329: E/AndroidRuntime(1794):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:377) 
09-24 07:40:08.329: E/AndroidRuntime(1794):  at android.app.Activity.setContentView(Activity.java:2144) 
09-24 07:40:08.329: E/AndroidRuntime(1794):  at com.example.ex_1.MainActivity.onCreate(MainActivity.java:19) 
09-24 07:40:08.329: E/AndroidRuntime(1794):  at android.app.Activity.performCreate(Activity.java:5937) 
09-24 07:40:08.329: E/AndroidRuntime(1794):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
09-24 07:40:08.329: E/AndroidRuntime(1794):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) 
09-24 07:40:08.329: E/AndroidRuntime(1794):  ... 10 more 
09-24 07:40:08.329: E/AndroidRuntime(1794): Caused by: android.app.Fragment$InstantiationException: Trying to instantiate a class com.example.ex_1.MainActivity$CounterFragment that is not a Fragment 
09-24 07:40:08.329: E/AndroidRuntime(1794):  at android.app.Fragment.instantiate(Fragment.java:606) 
09-24 07:40:08.329: E/AndroidRuntime(1794):  at android.app.Fragment.instantiate(Fragment.java:582) 
09-24 07:40:08.329: E/AndroidRuntime(1794):  at android.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2108) 
09-24 07:40:08.329: E/AndroidRuntime(1794):  at android.app.Activity.onCreateView(Activity.java:5286) 
09-24 07:40:08.329: E/AndroidRuntime(1794):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:733) 
09-24 07:40:08.329: E/AndroidRuntime(1794):  ... 20 more 
09-24 07:40:08.329: E/AndroidRuntime(1794): Caused by: java.lang.ClassCastException 
09-24 07:40:08.329: E/AndroidRuntime(1794):  ... 25 more 
+1

Можете ли вы отправить сообщение об ошибке? Это может помочь отследить, где ошибка. – httpNick

+0

Я обновил свой вопрос –

+0

Ошибка в xml, post R.layout.activity_main –

ответ

1

проблема заключается в том, что вы устанавливаете ваш уровень апи слишком низко, поэтому он использует «вспомогательную» версию фрагмента, а не «базовый» фрагмент

введите «min api level» в 11 в вашем androidmanifest, удалите зависимость от библиотеки «поддержки», удалите «import android.support.v4.app.Fragment» и замените его «import android.app.fragment», и это должны работать

+0

Вау .. он решил. благодаря –

0

изменение

public class MainActivity extends Activity { 

в

public class MainActivity extends FragmentActivity { 
Смежные вопросы