zooky
zooky

Reputation: 171

Replace Fragment on click

I want to replace my current Fragment by a new one when I click on FloatingActionButton. I tried it with a fragmentReplace but my app keeps crashing.

Am i missing something?

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

Process: com.example.danny.myapplication, PID: 3123 java.lang.IllegalArgumentException: No view found for id 0x7f0c0082 (com.example.danny.myapplication:id/newEvent) for fragment NewEventActivity{bd7d3d #2 id=0x7f0c0082} at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1059) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252) at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:742) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617) at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:517) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

Upvotes: 0

Views: 376

Answers (2)

AbhayBohra
AbhayBohra

Reputation: 2117

Your view R.id.newEvent should be the child layout of what you have defined in setContentView() method in your activity.

Upvotes: 2

Habil
Habil

Reputation: 540

Try this,

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

Upvotes: 0

Related Questions