2012-05-25 5 views
0

샘플 조각 애플리케이션을 만들었습니다. 목록 조각과 세부 조각과 같은 두 조각이 있습니다. 조각 클래스 코드 :Android : 조각이 작동하지 않습니다 런타임 예외가 발생했습니다

public class ListFragment1 extends ListFragment { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     String[] values = new String[] { "Android", "iPhone", "WindowsMobile", 
       "Blackberry", "WebOS", "Ubuntu", "Windows7" }; 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), 
       android.R.layout.simple_list_item_1, values); 
     setListAdapter(adapter); 
    } 

    @Override 
    public void onListItemClick(ListView l, View v, int position, long id) { 
     String item = (String) getListAdapter().getItem(position); 
     DetailFragment fragment = (DetailFragment) getFragmentManager() 
       .findFragmentById(R.id.detailFragment); 
     if (fragment != null && fragment.isInLayout()) { 
      fragment.setText(item); 
     } else { 
      Intent intent = new Intent(getActivity().getApplicationContext(), 
        DetailActivity.class); 
      intent.putExtra("value", item); 
      startActivity(intent); 

     } 

    } 
} 

상세 조각 클래스 :

public class DetailFragment extends Fragment { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Log.e("Test", "hello"); 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 

    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.details, container, false); 
     return view; 
    } 

    public void setText(String item) { 
     TextView view = (TextView) getView().findViewById(R.id.detailsText); 
     view.setText(item); 
    } 
} 

그리고 활동 클래스 DetailActivity 클래스

public class DetailActivity extends FragmentActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // Need to check if Activity has been switched to landscape mode 
     // If yes, finished and go back to the start Activity 
     if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { 
      finish(); 
      return; 
     } 

     setContentView(R.layout.details_activity_layout); 
     Bundle extras = getIntent().getExtras(); 
     if (extras != null) { 
      String s = extras.getString("value"); 
      TextView view = (TextView) findViewById(R.id.detailsText); 
      view.setText(s); 
     } 
    } 
} 

주요 활동 클래스 :

public class MyFragmentActivity extends FragmentActivity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 
} 
,

main.xml에

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal" > 

    <fragment 
     android:id="@+id/listFragment" 
     android:layout_width="150dip" 
     android:layout_height="wrap_content" 
     class="My.fragment.ListFragment1" ></fragment> 

    <fragment 
     android:id="@+id/detailFragment" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     class="My.fragment.DetailFragment" > 
     <!-- Preview: [email protected]/details --> 
    </fragment> 

내 로그 캣 추적이 ..

 05-28 10:42:28.866: W/dalvikvm(484): Unable to resolve superclass of LMy/Fragment/MyFragmentActivity; (21) 
05-28 10:42:28.866: W/dalvikvm(484): Link of class 'LMy/Fragment/MyFragmentActivity;' failed 
05-28 10:42:28.906: D/AndroidRuntime(484): Shutting down VM 
05-28 10:42:28.906: W/dalvikvm(484): threadid=3: thread exiting with uncaught exception (group=0x4001b188) 
05-28 10:42:28.906: E/AndroidRuntime(484): Uncaught handler: thread main exiting due to uncaught exception 
05-28 10:42:28.945: E/AndroidRuntime(484): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{My.Fragment/My.Fragment.MyFragmentActivity}: java.lang.ClassNotFoundException: My.Fragment.MyFragmentActivity in loader [email protected] 
05-28 10:42:28.945: E/AndroidRuntime(484): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2417) 
05-28 10:42:28.945: E/AndroidRuntime(484): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512) 
05-28 10:42:28.945: E/AndroidRuntime(484): at android.app.ActivityThread.access$2200(ActivityThread.java:119) 
05-28 10:42:28.945: E/AndroidRuntime(484): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863) 
05-28 10:42:28.945: E/AndroidRuntime(484): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-28 10:42:28.945: E/AndroidRuntime(484): at android.os.Looper.loop(Looper.java:123) 
05-28 10:42:28.945: E/AndroidRuntime(484): at android.app.ActivityThread.main(ActivityThread.java:4363) 
05-28 10:42:28.945: E/AndroidRuntime(484): at java.lang.reflect.Method.invokeNative(Native Method) 
05-28 10:42:28.945: E/AndroidRuntime(484): at java.lang.reflect.Method.invoke(Method.java:521) 
05-28 10:42:28.945: E/AndroidRuntime(484): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
05-28 10:42:28.945: E/AndroidRuntime(484): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
05-28 10:42:28.945: E/AndroidRuntime(484): at dalvik.system.NativeStart.main(Native Method) 
05-28 10:42:28.945: E/AndroidRuntime(484): Caused by: java.lang.ClassNotFoundException: My.Fragment.MyFragmentActivity in loader [email protected] 
05-28 10:42:28.945: E/AndroidRuntime(484): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) 
05-28 10:42:28.945: E/AndroidRuntime(484): at java.lang.ClassLoader.loadClass(ClassLoader.java:573) 
05-28 10:42:28.945: E/AndroidRuntime(484): at java.lang.ClassLoader.loadClass(ClassLoader.java:532) 
05-28 10:42:28.945: E/AndroidRuntime(484): at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
05-28 10:42:28.945: E/AndroidRuntime(484): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2409) 
05-28 10:42:28.945: E/AndroidRuntime(484): ... 11 more 

내 Manifest.xml은

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="My.Fragment" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="7" /> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <activity 
      android:name="MyFragmentActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity android:name="DetailActivity"></activity> 

    </application> 

</manifest> 

이 내가 인터넷 소스에서 얻을 첫 조각 프로그램입니다, 이 애플리케이션을 실행하면 Runtime excetion이 있는데 클래스에서 예외가 발견되지 않았습니다.

+0

나는 안드로이드 2.2를 사용하고 있으므로 android.support.v4.app.Fragment에서 Fragment를 얻습니다. – Sridhar

+0

"어떤 클래스가 예외를 찾을 수 없습니다"라는 질문은 매우 유용합니다. 예외 추적 LogCat을 게시하십시오. – curioustechizen

+0

@curioustechizen LagCat 추적을 추가했습니다 – Sridhar

답변

0

패키지는 안드로이드 매니페스트에 My.Fragment라고 ... 나에게 올바른 방법을 제공하지만, 레이아웃에서 당신은 My.fragment

+0

예, 그 중 하나를 수정했지만 동일한 오류가 발생합니다. – Sridhar

+0

LogCat 추적 – Sridhar

+0

을 게시하여 매니페스트에 My.Fragment.MyFragmentActivity를 정의 했습니까? – marwinXXII

0

시스템이 가진 조각을로드하려고로 지정한하세요 코드에서 My.Fragment으로 정의 된 경우 XML에 My.fragment 이름을 지정하십시오.

여기에 ClassNotFoundException이 표시됩니다.

0

main.xml 코드에는 detailfragment 인 조각이 들어 있습니다. 조각이 아닌 선형 레이아웃이어야합니다.

0

main.xml 파일에서 class = "My.fragment.DetailFragment"를 올바르게 정의해야합니다.

인터넷에서이 예제를 보았지만 동일한 예외가있었습니다.

"DetailFragment"위치를 패키지 이름으로 정의하면 작동합니다!

그러나 원래 예제에서는 프로젝트 이름으로 정의되므로이 클래스는 찾을 수 없습니다.

관련 문제