2017-02-21 12 views
-1

Я разрабатываю приложение для Android о музыке. В этом приложении у меня есть два фрагмента: PopFragment e GenresFragment.
В XML-файле PopFragment с именем 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" 
    /> 

В файле Java из PopFragment называется 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() для вас.

 Смежные вопросы

  • Нет связанных вопросов^_^