【问题标题】:Material ViewPager Tap on Back to Exit ActivityMaterial ViewPager 点击返回退出活动
【发布时间】:2016-02-10 05:41:38
【问题描述】:

当我使用 Florent 的 ViewPager Library 点击 back 时,无法 exit 寻呼机活动

我像这样打电话给PagerActivity

    public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this, PagerActivity.class);
                startActivity(intent);
            }
        });
    }
}

在这里(在 PagerActivity.java 中),默认情况下,我在 左上角 角得到back icon,但是当我在它上面执行tap 时,什么都没有@987654330 @。

像这样:

PagerActivity.java

public class PagerActivity extends AppCompatActivity {

    MaterialViewPager materialViewPager;
    View headerLogo;
    ImageView headerLogoContent;

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

        //4 onglets
        final int tabCount = 4;

        //les vues définies dans @layout/header_logo
        headerLogo = findViewById(R.id.headerLogo);
        headerLogoContent = (ImageView) findViewById(R.id.headerLogoContent);

        //le MaterialViewPager
        this.materialViewPager = (MaterialViewPager) findViewById(R.id.materialViewPager);
        this.materialViewPager.getViewPager().setAdapter(new FragmentStatePagerAdapter(getSupportFragmentManager()) {                   

            .........
        this.materialViewPager.getViewPager().setOffscreenPageLimit(tabCount);
        //relie les tabs au viewpager
        this.materialViewPager.getPagerTitleStrip().setViewPager(this.materialViewPager.getViewPager());
    }

    ......

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                finish();
                // onBackPressed();
                return true;
        }

        return super.onOptionsItemSelected(item);
    }

}

activity_pager.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.github.florent37.materialviewpager.MaterialViewPager
        android:id="@+id/materialViewPager"
        app:viewpager_color="@color/colorPrimary"
        app:viewpager_enableToolbarElevation="true"
        app:viewpager_headerAlpha="0.6"
        app:viewpager_headerHeight="200dp"
        app:viewpager_hideLogoWithFade="true"
        app:viewpager_hideToolbarAndTitle="true"
        app:viewpager_logo="@layout/header_logo"
        app:viewpager_pagerTitleStrip="@layout/material_view_pager_pagertitlestrip_newstand"
        app:viewpager_logoMarginTop="80dp"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>

【问题讨论】:

  • 请出示您的 PagerActivity 课程。
  • 向操作栏项目添加点击监听器以退出您的活动
  • 尝试 onBackPressed() 方法并显示 PagerActivity
  • 我知道通常我们使用完成或 onBackPressed() 离开活动,当点击后退图标时......但仅在使用 Florent 的 ViewPager 库时会遇到这个问题

标签: android android-viewpager toolbar


【解决方案1】:

您必须在PagerActivity 中添加以下代码。因为MaterialViewPager 库包含工具栏/操作栏,所以你必须先设置它。

this.materialViewPager = (MaterialViewPager) findViewById(R.id.materialViewPager);
toolbar = materialViewPager.getToolbar();
if (toolbar != null) {
    setSupportActionBar(toolbar);

    final ActionBar actionBar = getSupportActionBar();
    if (actionBar != null) {
    actionBar.setDisplayHomeAsUpEnabled(true);
    }
}

之后使用下面的方法

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == android.R.id.home) {
        finish();
    }
    return super.onOptionsItemSelected(item);
}

【讨论】:

    【解决方案2】:

    只需将此方法添加到您的PagerActivity

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == android.R.id.home) {
            finish();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
    

    【讨论】:

    • 我知道通常我们使用上述方法来完成活动,当点击后退图标时......但仅在使用 Florent 的 ViewPager 库时会遇到这个问题
    猜你喜欢
    • 1970-01-01
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    • 1970-01-01
    相关资源
    最近更新 更多