2016-09-28 8 views
0

FloatingActionButtonをクリックすると、現在のフラグメントを新しいものに置き換えます。私はfragmentReplaceで試してみましたが、私のアプリはクラッシュしています。クリックするとフラグメントが置換されます

私に何か不足していますか?

コード:

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(); 
} 

フラグメント:

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

プロセス:com.example.danny.myapplication、PID:3123 java.lang.IllegalArgumentExceptionが:断片 NewEventActivity android.support.v4.appで{bd7d3d#2、ID = 0x7f0c0082} 用:ID 0x7f0c0082 が見つかりませんビュー(ID/NEWEVENT com.example.danny.myapplication)。 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) at android.support.v4.app.FragmentManagerImpl $ 1.run(FragmentManager.java:517) (android.os.Handler.handleCallback(Handler.java:739)) (android.os.Handler.dispatchMessage(Handler.java:517) 9535) android.os.Looper.loop(Looper.java:148) とandroid.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(ネイティブメソッド) com.android.internal.os.ZygoteInit.mainで com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726) (ZygoteInit.java:616)で

+2

logcatを追加してください – AbhayBohra

+0

現在のフラグメントを新しいものに置き換えようとしていますか? – user1506104

+3

android.support.v4.app.Fragmentはandroid.app.Fragmentの代わりに使用します。 –

答えて

2

あなたのビューを、これを試してみてくださいR.id.newEventあなたはsetContentViewであなたの活動の()メソッドを定義しているものの子のレイアウトにする必要があります。

+0

どこですか?またはどのように? – zooky

+0

onCreateView()メソッドで設定したレイアウトは、そのレイアウトにID newEvent – AbhayBohra

+0

というビューが含まれている必要があります。つまり、実際のフラグメントを置き換えるべきフラグメンテーションが同じxmlにある必要がありますか?O – zooky

0

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

didwork ..... – zooky

関連する問題