2017-02-21 26 views
-1

私は音楽に関するAndroidアプリを開発しています。このアプリでは、2つの断片があります:PopFragment e GenresFragment。
PopFragmentのXMLファイルには、fragment_pop.xmlという名前が付けられています。私は、ツールバーに戻る矢印があり、GenresFragmentに戻ります。
マイツールバーのコードはこれです:PopFragmentのJavaファイルでバック・クリックを処理する方法は?

<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
    > 
<include 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    layout="@layout/toolbar_layout" 
    /> 

</android.support.design.widget.AppBarLayout> 

<ImageButton 
    android:id="@+id/arrowPop" 
    android:layout_width="54dp" 
    android:layout_height="wrap_content" 
    android:src="@drawable/ic_arrow_back_black_24dp" 
    style="?android:attr/borderlessButtonStyle" 
    /> 

がPopActivityと呼ばれる、私はいくつかのコードを持っているが、それは働いていません。
私はこのコードを持っている:

public class PopActivity extends AppCompatActivity implements View.OnClickListener { 


public PopActivity() { 
    // Required empty public constructor 
} 

@Override 
protected void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.fragment_pop); 
    Toolbar toolbar = (Toolbar)findViewById(R.id.toolBar); 
    setSupportActionBar(toolbar); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    getSupportActionBar().setDisplayShowHomeEnabled(true); 
    ImageButton backBtn = (ImageButton)findViewById(R.id.arrowPop); 
} 

@Override 
public void onClick (View view) { 

    Intent i = new Intent(); 
    switch (view.getId()) { 
     case R.id.arrowPop: 
      break; 
    } 
} 

あなたは私助けてくださいことはできますか?

答えて

0

のようなもの試しいただきありがとうございます:あなたは、一般的に、独自の矢印アイコンを追加する必要はありません

public void onCreateOptionsMenu(Menu menu, MenuInflater inflater){ 
    inflater.inflate(R.menu.your_menu, menu); 
} 

public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case android.R.id.home: { 
      getActivity().onBackPressed(); 
      break; 
     } 
    } 
    return true; 
} 
0

を、ツールバーがあなたのためにそれを処理することができるはずです。

if(shouldShowArrow()) { 
    drawerLayout.setDrawerLockMode(LOCK_MODE_LOCKED_CLOSED, GravityCompat.START); 
    drawerToggle.setDrawerIndicatorEnabled(false); 
    MyActivity.this.getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
} else { // hamburglar icon 
    drawerLayout.setDrawerLockMode(LOCK_MODE_UNLOCKED, GravityCompat.START); 
    MyActivity.this.getSupportActionBar().setDisplayHomeAsUpEnabled(false); 
    drawerToggle.setDrawerIndicatorEnabled(true); 
} 
drawerToggle.syncState(); 

そして、あなたは戻るボタンが押されて模倣クイックフィックス、として次のコードを使用して、矢印に

@Override 
protected void onCreate(Bundle bundle) { 
    super.onCreate(bundle); 
    ButterKnife.bind(this); 
    setSupportActionBar(toolbar); 
    ActionBar actionBar = getSupportActionBar(); 
    drawerToggle = new ActionBarDrawerToggle(MyActivity.this, drawerLayout, toolbar, R.string.open, R.string.close) { 
     @Override 
     public void onDrawerClosed(View drawerView) { 
      super.onDrawerClosed(drawerView); 
      MyActivity.this.supportInvalidateOptionsMenu(); 
     } 

     @Override 
     public void onDrawerOpened(View drawerView) { 
      super.onDrawerOpened(drawerView); 
      MyActivity.this.supportInvalidateOptionsMenu(); 
     } 
    }; 
    drawerLayout.setDrawerListener(drawerToggle); 

    drawerToggle.setToolbarNavigationClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // what to do when you click the arrow 
     } 
    }); 
    actionBar.setDisplayHomeAsUpEnabled(false); 
    actionBar.setHomeButtonEnabled(true); 
} 

@Override 
protected void onPostCreate(Bundle bundle) { 
    super.onPostCreate(bundle); 
    drawerToggle.syncState(); 
} 

@Override 
protected void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    drawerToggle.onConfigurationChanged(newConfig); 
} 
0

をクリックしたときに何が起こるかを定義することができます。

switch (view.getId()) { 
    case R.id.arrowPop: 
     onBackPressed(); 
     break; 
} 

このコードを使用すると、ツールバーの[戻る]ボタンを自分で定義する必要はありません。Androidがこれを処理します。あなたは[戻る]ボタンをクリックしたときに

Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar); 
setSupportActionBar(toolbar); 

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
getSupportActionBar().setDisplayShowHomeEnabled(true); 

その後、AndroidはあなたのためのonBackPressed()を呼び出します。

関連する問題