web-dev-qa-db-ja.com

AppCompatとFragmentが機能しない

02-19 11:49:17.369: E/AndroidRuntime(4209): Java.lang.NoClassDefFoundError: com.slidingmenus.fragments.HomeFragment
02-19 11:49:17.369: E/AndroidRuntime(4209):     at com.slidingmenus.MainActivity.displayCategoryView(MainActivity.Java:242)
02-19 11:49:17.369: E/AndroidRuntime(4209):     at com.slidingmenus.MainActivity.onCreate(MainActivity.Java:121)

スタックオーバーフローで提案されたありとあらゆる手順を試しましたが、役に立ちませんでした。

4.0+ではエラーなしで機能しますが、2.3.xデバイスでは、Java.lang.NoClassDefFoundErrorを提供します。

line 242: fragment = new HomeFragment();

フラグメントからの私のインポートは:

import Android.app.Fragment;
import Android.app.FragmentManager;

そして私は使っています:

FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit();

これが私の家の断片です:

import Android.app.Fragment;
import Android.os.Bundle;
import Android.view.LayoutInflater;
import Android.view.View;
import Android.view.ViewGroup;   

public class HomeFragment extends Fragment {        
   public HomeFragment(){}

   @Override
   public View onCreateView(LayoutInflater inflater, ViewGroup container,
           Bundle savedInstanceState) {

           View rootView = inflater.inflate(R.layout.layout_main_fragment,container, false);

           return rootView;
    }
 }

これを解決するためにすでに午前中過ごしました。まだ運がない。どんな助けでも大歓迎です。

ありがとう

16
prashantwosti

サポートライブラリのFragmentを使用する必要があります。

_import Android.support.v4.app.Fragment;
import Android.support.v4.app.FragmentManager;
_

また、getSupportFragmentManager()を使用する必要があります。AppCompatを使用しているため、アクティビティはActionbarActivityを拡張する必要があります。

_ FragmentManager fragmentManager = getSupportFragmentManager();
_

更新:

ActionBarActivityはサポートライブラリのAppCompatActivityの使用が推奨されていません。サポートリポジトリを最新に更新することを忘れないでください。

22
Raghunandan

このコードをインポートしてみてください:

import Android.support.v4.app.Fragment;

そして使う

    Fragment fragment = new HomeFragment();
    Android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager();
    fragmentManager.beginTransaction().replace(R.layout.layout_main_fragment, fragment).commit();
2
LONGMAN

私は同じ問題に直面し、それをインポートサポートライブラリで解決して使用しました

import Android.support.v4.app.Fragment;
import Android.support.v4.app.FragmentManager;

代わりに

import Android.app.Fragment;
import Android.app.FragmentManager;
1
M D