2017-02-21 87 views
-1

我正在開發一個關於音樂的Android應用程序。在這個應用程序中,我有兩個片段:PopFragment e GenresFragment。
在PopFragment的XML文件中調用fragment_pop.xml,我有一個工具欄,它帶有一個返回到GenresFragment的後退箭頭。
我的工具欄的代碼是這樣的:如何處理後退箭頭點擊?

<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" 
    /> 

在PopFragment的Java文件名爲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()