Autore Topic: Fragment che non funziona  (Letto 317 volte)

Offline oberdank

  • Utente normale
  • ***
  • Post: 287
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Core LTE
  • Play Store ID:
    BuzzOne
  • Sistema operativo:
    Windows 8.1
Fragment che non funziona
« il: 11 Dicembre 2014, 17:21:19 CET »
0
Sono alle prese con i Fragment (avevo fatto una pausa e adesso sono tornato a occuparmi dei Fragment).
Il seguente programma mi da errore a run-time, allego il LogCat.
Come devo modificare il programma perche' funzioni?
I file sono cinque ma sono tutti molto brevi (a parte il LogCat).

********** MainActivity.java **********
Codice (Java): [Seleziona]
package com.prove.provafragment9;

import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;

public class MainActivity extends Activity
{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_one);
    }

    public void onResume()
    {
        super.onResume();

        Fragment1 fragment=new Fragment1();

        FragmentManager fm=getFragmentManager();
        FragmentTransaction ft=fm.beginTransaction();
        ft.add(R.id.fragment1,fragment);
        ft.commit();
    }
}

********** Fragment1.java **********
Codice (Java): [Seleziona]
package com.prove.provafragment9;

import android.os.Bundle;
import android.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class Fragment1 extends Fragment
{

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        //TextView textView = new TextView(getActivity());
        //textView.setText(R.string.hello_blank_fragment);
        //return textView;
        return inflater.inflate(R.layout.fragment1_xml, container, false);
    }
}

********** activity_one.xml **********
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="match_parent"
   android:layout_height="match_parent">

    <fragment
       android:layout_width="match_parent"
       android:layout_height="0dp"
       android:layout_weight="0.70"
       android:id="@+id/fragment1"
   />

    <fragment
       android:layout_width="match_parent"
       android:layout_height="0dp"
       android:layout_weight="0.30"
       android:id="@+id/fragment2"
   />

</LinearLayout>

********** fragment1_xml.xml **********
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="horizontal"
   android:layout_width="match_parent"
   android:layout_height="match_parent">

    <Button
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="Bottone 1"
       android:id="@+id/button1" />

    <Button
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="Bottone 2"
       android:id="@+id/button2" />
</LinearLayout>
   
********** fragment2_xml.xml **********
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical" android:layout_width="match_parent"
   android:layout_height="match_parent">

    <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="New Text"
       android:id="@+id/textView1"
       android:textSize="50dp" />
</LinearLayout>

********** LogCat **********
Codice: [Seleziona]
12-11 11:10:10.976    1438-1438/com.prove.provafragment9 E/AndroidRuntime? FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.prove.provafragment9/com.prove.provafragment9.MainActivity}: android.view.InflateException: Binary XML file line #7: Error inflating class fragment
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
            at android.app.ActivityThread.access$600(ActivityThread.java:141)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5103)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class fragment
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:267)
            at android.app.Activity.setContentView(Activity.java:1895)
            at com.prove.provafragment9.MainActivity.onCreate(MainActivity.java:13)
            at android.app.Activity.performCreate(Activity.java:5133)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
            at android.app.ActivityThread.access$600(ActivityThread.java:141)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5103)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException: name == null
            at java.lang.VMClassLoader.findLoadedClass(Native Method)
            at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:354)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:491)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
            at android.app.Fragment.instantiate(Fragment.java:582)
            at android.app.Fragment.instantiate(Fragment.java:560)
            at android.app.Activity.onCreateView(Activity.java:4738)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:267)
            at android.app.Activity.setContentView(Activity.java:1895)
            at com.prove.provafragment9.MainActivity.onCreate(MainActivity.java:13)
            at android.app.Activity.performCreate(Activity.java:5133)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
            at android.app.ActivityThread.access$600(ActivityThread.java:141)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5103)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Fragment che non funziona
« Risposta #1 il: 11 Dicembre 2014, 18:04:05 CET »
0
Da quale esempio hai tratto la base di questi sorgenti?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline oberdank

  • Utente normale
  • ***
  • Post: 287
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Core LTE
  • Play Store ID:
    BuzzOne
  • Sistema operativo:
    Windows 8.1
Re:Fragment che non funziona
« Risposta #2 il: 11 Dicembre 2014, 18:15:34 CET »
0
Il programma l'ho scritto io, mi sono basato su un programma che invoca un DialogFragment che sono riuscito a scrivere.

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Fragment che non funziona
« Risposta #3 il: 11 Dicembre 2014, 18:29:33 CET »
0
Ti consiglio di partire dall'esempio di base, la prima lezione sui fragment sul sito ufficiale android.

Creating a Fragment | Android Developers

Vedrai prima di tutto che nel primo XML ti manca il necessario collegamento alle "classi" del fragment (android:name).
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store