Probleme mit Fragments

  • Antworten:5
Buckwild
  • Forum-Beiträge: 15

07.05.2012, 14:34:00 via Website

Hi,

wie der Titel schon sagt komm ich mit Fragments nicht klar. Mein app will ums verrecken nicht starten und ich kann mir nicht erklären warum.
Wenn einer mal die Zeit hat sich diesen Code anzuschaun wär das super, weil ich komm ned drauf wo der fehler liegt ; (. Dabei ist der Code so simpel wie möglich.

Meine Main:
1package de.test.fragment;
2
3import android.os.Bundle;
4import android.support.v4.app.FragmentActivity;
5
6public class FragActivity extends FragmentActivity {
7 protected void onCreate(Bundle savedInstanceState){
8 super.onCreate(savedInstanceState);
9 setContentView(R.layout.main);
10 }
11}

Die Main-xml:
1<?xml version="1.0" encoding="utf-8"?>
2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="fill_parent"
4 android:layout_height="fill_parent"
5 android:orientation="vertical" >
6 <fragment
7 android:id="@+id/frag_one"
8 android:name="de.test.fragment.FragmentONE"
9 android:layout_width="fill_parent"
10 android:layout_height="fill_parent">
11 <!-- Preview: layout=@layout/fragment_one -->
12 </fragment>
13</LinearLayout>

Mein Fragment-Code:
1package de.test.fragment;
2
3import android.os.Bundle;
4import android.support.v4.app.Fragment;
5import android.view.LayoutInflater;
6import android.view.View;
7import android.view.View.OnClickListener;
8import android.view.ViewGroup;
9import android.widget.Button;
10import android.widget.Toast;
11
12public class FragmentONE extends Fragment {
13 @Override
14 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
15 View view = inflater.inflate(R.layout.fragment_one, container, false);
16 Button button= (Button)view.findViewById(R.id.fragment_button);
17 button.setOnClickListener(new OnClickListener(){
18 public void onClick(View v){
19 Toast.makeText(getActivity(), R.string.hello, Toast.LENGTH_LONG).show();
20 }
21 });
22 return view;
23 }
24}

und die Fragment-xml
1<?xml version="1.0" encoding="utf-8"?>
2
3<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
4 android:layout_width="fill_parent"
5 android:layout_height="fill_parent"
6 android:orientation="vertical" >
7
8 <Button
9 android:id="@+id/fragment_button"
10 android:layout_width="fill_parent"
11 android:layout_height="wrap_content"
12 android:text="@string/hello" />
13
14</LinearLayout>

Hier noch die Log:
05-07 12:19:56.016: E/AndroidRuntime(302): Uncaught handler: thread main exiting due to uncaught exception
05-07 12:19:56.016: E/AndroidRuntime(302): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{de.test.fragment/de.test.fragment.FragActivity}: java.lang.ClassNotFoundException: de.test.fragment.FragActivity in loader dalvik.system.PathClassLoader@44e8c808
05-07 12:19:56.016: E/AndroidRuntime(302): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2417)
05-07 12:19:56.016: E/AndroidRuntime(302): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
05-07 12:19:56.016: E/AndroidRuntime(302): at android.app.ActivityThread.access$2200(ActivityThread.java:119)
05-07 12:19:56.016: E/AndroidRuntime(302): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
05-07 12:19:56.016: E/AndroidRuntime(302): at android.os.Handler.dispatchMessage(Handler.java:99)
05-07 12:19:56.016: E/AndroidRuntime(302): at android.os.Looper.loop(Looper.java:123)
05-07 12:19:56.016: E/AndroidRuntime(302): at android.app.ActivityThread.main(ActivityThread.java:4363)
05-07 12:19:56.016: E/AndroidRuntime(302): at java.lang.reflect.Method.invokeNative(Native Method)
05-07 12:19:56.016: E/AndroidRuntime(302): at java.lang.reflect.Method.invoke(Method.java:521)
05-07 12:19:56.016: E/AndroidRuntime(302): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
05-07 12:19:56.016: E/AndroidRuntime(302): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
05-07 12:19:56.016: E/AndroidRuntime(302): at dalvik.system.NativeStart.main(Native Method)
05-07 12:19:56.016: E/AndroidRuntime(302): Caused by: java.lang.ClassNotFoundException: de.test.fragment.FragActivity in loader dalvik.system.PathClassLoader@44e8c808
05-07 12:19:56.016: E/AndroidRuntime(302): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
05-07 12:19:56.016: E/AndroidRuntime(302): at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
05-07 12:19:56.016: E/AndroidRuntime(302): at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
05-07 12:19:56.016: E/AndroidRuntime(302): at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
05-07 12:19:56.016: E/AndroidRuntime(302): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2409)
05-07 12:19:56.016: E/AndroidRuntime(302): ... 11 more

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

07.05.2012, 17:09:56 via Website

Der Name des Fragment stimmt auch nicht, er kann die klasse auch nicht finden ...

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Buckwild
  • Forum-Beiträge: 15

09.05.2012, 09:38:01 via Website

hm ich kann dir nicht ganz folgen?! das er die klasse nicht findet ist das problem ja. aber was meinst du mit dem namen vom fragment?

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

09.05.2012, 10:16:27 via Website

er findet de.test.fragment.FragActivity nicht

dein Fragment, zumindest jenes, dass du hier auflistest, heißt aber FragmentOne

FragActivity != FragmentOne

swordiApps Blog - Website

Antworten
Buckwild
  • Forum-Beiträge: 15

09.05.2012, 11:25:07 via Website

Also ich steh ziemlich auf dem Schlauch merk ich..
Ich mach eigendlich nichts anderes als hier beschrieben: http://developer.android.com/training/basics/fragments/creating.html

Ich hab meine FragActivity die ein Layout (main) aufruft.
Darin ist ein Fragment (FragmentONE). mit android:name sage ich ihm welche class er aufrufen soll und wo er sie findet.

Das Fragment hat ein eigenes Layout (fragment_one) in der ein Button eingebettet ist. In der class FragmentONE kann ich per inflater das Layout des Fragments aufrufen.

Nun... was genau mach ich falsch? oder hab ich irgendwas übersehn bzw. nicht verstanden?

Antworten
Buckwild
  • Forum-Beiträge: 15

09.05.2012, 13:01:48 via Website

Habs jetzt. Das problem war das ich die android-support-v4.jar über build path->configure build path hinzugefügt hatte. das scheint anscheinend ned zu klappen.

mit rechtsklick auf das project->android tools->add support library funktionierts tadellos.

ich weiss auch nicht mehr wo ich das mit dem build path her hatte. jedenfalls sollte die .jar immer in libs eingetragen werden.

Antworten