0

私は、アプリケーションバーの3つのボタンをクリックすると、メインアクティビティに3つのフラグメントを含める必要があります。さて質問はmainActivityの2番目のアクティビティから特定のフラグメントに戻ってみたいのですが、私はインテントを使用していますが、アプリケーションのインテントの開始時にnullで、nullpointer例外とアプリケーションクラッシュを取得します。アクティビティからフラグメントに移動するには?

はここ

public class MainActivity extends AppCompatActivity { 

private ActivityMainBinding binding; 

FragmentTransaction fragmentTransaction; 
HomeFragment homeFrag; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    binding = DataBindingUtil.setContentView(this,R.layout.activity_main); 

    //--------Set and Get Tool Bar-------// 
    setSupportActionBar(binding.appbar); 
    getSupportActionBar().setTitle(""); 

    if(getIntent() !=null){ 
     String is = getIntent().getStringExtra("check"); 
     if(is.equals("1")){ 
      SearchFragment searchFrag = new SearchFragment(); 
      if(searchFrag != null){ 
       fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
       fragmentTransaction.replace(R.id.fragmentContainer, searchFrag) 
         .addToBackStack(null).commit(); 
      } 
     } 
    }else{ 
     homeFrag = new HomeFragment(); 
     if(homeFrag!=null) { 
      fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
      fragmentTransaction.replace(R.id.fragmentContainer, homeFrag).commit(); 
     } 
    } 
} 
public void MoveToSearchActivity(View view){ 
    SearchFragment searchFag = new SearchFragment(); 

    fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
    fragmentTransaction.replace(R.id.fragmentContainer,searchFag).commit(); 
} 

public void MoveToHomeActivity(View view){ 
    if(homeFrag!=null) { 
     fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
     fragmentTransaction.replace(R.id.fragmentContainer, homeFrag).commit(); 
    } 
} 

public void MoveToAlertFrag(View view){ 
    AlertFragment alertFragment = new AlertFragment(); 

    fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
    fragmentTransaction.replace(R.id.fragmentContainer,alertFragment).commit(); 
} 

MainActivity.javaされており、ここで私はフラグメントに戻って行くよ、そこから私のFilterActivity.javaです:

public class FilterActivity extends AppCompatActivity{ 

private ActivityFilterBinding binding; 

@Override 
protected void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_filter); 

    //--------------Get ToolBar-----------// 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    getSupportActionBar().setTitle(" "); 
    getSupportActionBar().setDisplayShowHomeEnabled(true); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()){ 
     case android.R.id.home: 
      Intent homeIntent = new Intent(FilterActivity.this, MainActivity.class); 
      homeIntent.putExtra("check",1); 
      startActivity(homeIntent); 
      break; 
     default: 
      break; 
    } 
    return true; 
} 
} 

感謝。

+0

Plzがもっと詳しく... –

+0

申し訳ロードするためにwnatフラグメントbackpressに管理する必要がfirstactivity第2 activitから移動することができます – Ahsan

+0

2番目のアクティビティから戻ると、あなたはfristactivityにリダイレクトされます。最初のアクティビティを通知するために最初のアクティビティを通知するには、このフラグメントを開くだけです。 –

答えて

0

MainActivityでこれを試してみてください

// Toolbar code 
... 

int is = -1; 
if (getIntent() != null && getIntent().hasExtra("check")) { 
    is = getIntent().getIntExtra("check", -1); 
} 
switch (is) { 
    case 1: 
     // load SearchFragment 
     break; 
    case 2: 
     // load MoveToAlertFrag 
     break; 
    default: 
     // load HomeFragment 
     break; 
} 
あなたはonly..youが、私はuがしたいのか理解していないあなたは
+0

を回避するにはtry catchを使用しますが、どのようにしてボタンのクリックイベントでfrgmentを得ることができますか? – Ahsan

+0

どのボタンですか?それは与えられたコードではありません。コードを更新してください。 –

+0

MoveToAlertのように私のXML上にonClickプロパティを定義しています。MoveToSearchはボタンをクリックして呼び出します – Ahsan

関連する問題