【问题标题】:Switching views when a tab is clicked in Android在 Android 中单击选项卡时切换视图
【发布时间】:2015-04-23 16:27:20
【问题描述】:

我知道有人问过这个问题,并且我知道我需要做什么;我只需要轻轻一推就能让我越过终点线。这是我所拥有的。

具有两个选项卡的 Android 应用程序,我需要根据选择的选项卡切换片段视图。到目前为止,这是我的代码。

主要活动

    @Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
    // This is called when a tab is selected.
    Log.d(app, "Tab: " + tab.getPosition());

    switch (tab.getPosition()) {
        case 0:
            Test1Fragment test1Fragment = new Test1Fragment();
            fragmentTransaction.add(R.id.fragment_container, test1Fragment);
            break;
        case 1:
            //Intent i = new Intent(this, Test1.class);
            //startActivity(i);
            Test2Fragment test2Fragment = new Test2Fragment();
            fragmentTransaction.add(R.id.fragment_container, test2Fragment);
            break;
        case 2:
            break;
        default:
    }
}

// Implemented from ActionBar.TabListener
@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
    // This is called when a previously selected tab is unselected.
}

// Implemented from ActionBar.TabListener
@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
    // This is called when a previously selected tab is selected again.
}

main_activity.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/fragment_container">

我只是不知道如何给碎片充气。单击选项卡一时,此代码将显示 test1Fragment,但单击选项卡二时仍显示 test1Fragment。我知道我需要删除和更换。我只是不知道该怎么做。请帮忙

【问题讨论】:

标签: android android-fragments tabs


【解决方案1】:

我看到的第一件事是,您缺少用于完成交易的 commit()。

按照本教程进行操作: https://www.youtube.com/watch?v=Gimo5cZler8 而且是后续教程,实现viewpager也很有意思。

它帮助我在我的应用程序中成功实现了它。 https://www.youtube.com/watch?v=iJ178Z8U7FM

这是你感兴趣的部分:

package com.example.multiplefrag;

import android.app.Fragment;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;

import com.example.fragmentexample.R;

public class MenuFragment extends Fragment {
    Fragment frag;
    FragmentTransaction fragTransaction;

    public MenuFragment() {
        // TODO Auto-generated constructor stub
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.menu_multi, container, false);

        frag = new KoalaFragment();
        fragTransaction = getFragmentManager().beginTransaction().add(R.id.container,frag);
        fragTransaction.commit();

        Button btnKoala = (Button) view.findViewById(R.id.buttonKoala);
        Button btnPenguin = (Button) view.findViewById(R.id.buttonPenguin);
        Button btnOther = (Button) view.findViewById(R.id.buttonOther);
        btnKoala.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                frag = new KoalaFragment();
                fragTransaction = getFragmentManager().beginTransaction().replace(R.id.container,frag);
                fragTransaction.commit();
            }
        });

        btnPenguin.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                frag = new PenguinFragment();
                fragTransaction = getFragmentManager().beginTransaction().replace(R.id.container,frag);
                fragTransaction.commit();
            }
        });
        btnOther.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                frag = new OtherFragment();
                fragTransaction = getFragmentManager().beginTransaction().replace(R.id.container,frag);
                fragTransaction.commit();
            }
        });

        return view;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-13
    • 2013-05-12
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    • 2014-08-31
    • 1970-01-01
    相关资源
    最近更新 更多