2016-09-28 2 views
0

Je souhaite remplacer mon fragment actuel par un nouveau lorsque je clique sur FloatingActionButton. Je l'ai essayé avec un fragmentReplace, mais mon application continue à se bloquer.Remplacer fragment Cliquez sur

Ai-je raté quelque chose?

code:

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      android.app.Fragment someFrag = new NewEventActivity(); 
      replaceFragment(someFrag); 

      //Snackbar.make(view, "Hallo du heimlich pupsende :P", Snackbar.LENGTH_LONG) 
      //  .setAction("Action", null).show(); 
     } 

    }); 

} 


public void replaceFragment(android.app.Fragment someFrag){ 
    android.app.FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
    transaction.replace(R.id.newEvent, someFrag); 
    transaction.addToBackStack(null); 
    transaction.commit(); 
} 

Fragment:

public class NewEventActivity extends android.app.Fragment { 

LayoutInflater inflater; 


public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.new_event_fragment, container, false); 


    return rootView; 
    } 
} 

Logcat

processus: com.example.danny.myapplication, PID: 3123 java.lang.IllegalArgumentException: Pas de vue trouvée pour id 0x7f0c0082 (com.example.danny.myapplication: id/NewEvent) pour le fragment NewEventActivity {bd7d3d # 2 id = 0x7f0c0082} à android.support.v4.app. FragmentManagerImpl.moveToState (FragmentManager.java:1059) à android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1252) à android.support.v4.app.BackStackRecord.run (BackStackRecord.java: 742) at android.support.v4.app.FragmentManagerImpl.execPendingActions (FragmentManager.java:1617) à android.support.v4.app.FragmentManagerImpl $ 1.run (FragmentManager.java:517) à android.os.Handler.handleCallback (Handler.java:739) à android.os.Handler.dispatchMessage (Handler.java: 95) à android.os.Looper.loop (Looper.java:148) à android.app.ActivityThread.main (ActivityThread.java:5417) à java.lang.reflect.Method.invoke (méthode native) à com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726) à com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616)

+2

veuillez ajouter votre logcat – AbhayBohra

+0

essayez-vous de remplacer le fragment actuel par un nouveau? – user1506104

+3

android.support.v4.app.Fragment l'utilise à la place de android.app.Fragment. –

Répondre

2

Votre vue R.id.newEvent devrait être la mise en page des enfants de ce que vous avez défini dans la méthode setContentView() dans votre activité.

+0

où? ou comment?? – zooky

+0

quelle que soit la disposition que vous définissez dans la méthode onCreateView(), cette présentation doit contenir cette vue qui a un nouvel identifiant – AbhayBohra

+0

, ce qui signifie que le fragment qui doit remplacer le fragment doit être dans le même xml?: O – zooky

0

Essayez ceci,

FragmentManager fm = getSupportFragmentManager(); 
fm.beginTransaction().replace(R.id.main_activity, 
new YourNewFragment()).addToBackStack(YourPreviousFragment.class.getName()) 
.commit(); 
+0

ne fonctionne pas ..... – zooky