0

アクティビティでフラグメントを開くこのコードがあります。私がしたいのは、 "book"という名前のフラグメントを呼び出すことです。フラグメントとの活動でアクティビティでフラグメントを開始する方法変数で保留中のインテントから

Intent intent = new Intent(this, Dashboard_Admin.class); 
    intent.setAction(Intent.ACTION_MAIN); 
    intent.addCategory(Intent.CATEGORY_LAUNCHER); 
    intent.putExtra("FragmentBooking", "book"); 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
    PendingIntent pendingIntent = PendingIntent.getActivity(this,0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

私はこのコード

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_dashboard_admin); 
    Bundle extra = getIntent().getExtras(); 
    Toast.makeText(this, "test!!!!!!!!!!!!!!!!!!!!", Toast.LENGTH_SHORT).show(); 
    if (extra!=null){ 
     String idFrg = extra.getString("FragmentBooking"); 
     Toast.makeText(this, "Hello: "+idFrg, Toast.LENGTH_SHORT).show(); 
     if (idFrg.equals("book")){ 
      Log.d(TAG_SUCCESS, "Test"); 
      Fragment fragment = null; 
      Class fragmentClass = null; 
      fragmentClass = FragmentBookingKendaraan.class; 
      try { 
       fragment = (Fragment) fragmentClass.newInstance(); 
      } catch (InstantiationException e) { 
       e.printStackTrace(); 
      } catch (IllegalAccessException e) { 
       e.printStackTrace(); 
      } 
      FragmentManager fragmentManager = getSupportFragmentManager(); 
      fragmentManager.beginTransaction().replace(R.id.flContentAdmin, fragment).commit(); 
     } 
    } 
} 

を持っている。しかし、バンドルは常にnullです。ここで何が間違っていますか? はこの試してみてください、あなたに

答えて

0

ありがとう:Activityからあなたのフラグメントを呼び出すには

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_dashboard_admin); 

     if (getIntent().getStringExtra("FragmentBooking")!=null){ 
      if (getIntent().getStringExtra("FragmentBooking").equals("book")){ 
       FragmentManager fragmentManager = getSupportFragmentManager(); 
       fragmentManager 
     .beginTransaction() 
     .replace(R.id.flContentAdmin, new FragmentBookingKendaraan()) 
     .commit(); 
      } 
     }} 
+0

それはdoesnのだ(()のonCreateでこのコードを書きます) t仕事、バンドルはまだヌルです:( –

+0

@SugiAlmantaraどのバンドルですか?もうバンドルはありません。オブジェクト –

+0

私は 'getIntent()。getStringExtra(" FragmentBooking ")を意味します!= null'はまだnullを与えます 私は残念です –

0

を、私は一般的なクラスにあるメソッドを持っています。

public void showFragment(Fragment fragment, String back_stack_name, boolean isAddToBackStack) { 
     FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
     transaction.add(R.id.container, fragment); 
     if (isAddToBackStack) { 
      transaction.addToBackStack(back_stack_name); 
     } 
     transaction.commit(); 
    } 

パッシングバンドルのアクティビティからフラグメントをコールします。 「あなたはフラグメントにバンドルを渡したくない場合はフラグメントで

Classname classname = new Classname(); 
Bundle bundle = new Bundle(); 
bundle.putBundle("key", "value"); 
classname.setArguments(bundle); 
showFragment(classname, fragment_name, true); 

Bundle mBundle = getArguments(); 
    if (mBundle != null) { 
     String variable = mBundle.getString("key"); 
    } 

Classname classname = new Classname(); 
showFragment(classname, fragment_name, true); 
関連する問題