繁体   English   中英

如何使用 Fragments 在 TabLayout 内单击按钮打开新活动

[英]How to open new activity on button click inside TabLayout using Fragments

我想用 Tabview 创建一个应用程序,所以我启动了一个带有选项卡式活动和操作栏选项卡(带有 viewPager)的应用程序。然后我创建了名为 tab1、tab2、tab3 的片段。 您也可以在以下链接和源代码中找到我在 tabview 上方遵循的教程

https://www.simplifiedcoding.net/android-tablayout-example-using-viewpager-fragments/

从这里开始,我的问题从上面的三个选项卡开始,我创建了图像视图,然后单击该按钮向上按钮我想打开新活动。我是编程新手,希望我能得到答案。 我将非常感谢您的帮助。

这是我想在单击按钮时调用新活动的选项卡代码。

tab1.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:background="#ca064006"
            android:id="@+id/imageView" />

        <Button
            android:text="Button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/imageView"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="88dp"
            android:id="@+id/button" />

</RelativeLayout>

Tab1.java

import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class Tab1 extends Fragment{
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.messages, container, false);
    }
}

单击上面代码中的按钮,我想调用新活动,请你编辑代码。

首先,您必须在代码中绑定此按钮,然后使用Intent在该按钮的 onClick 事件上打开另一个活动

在片段中执行以下操作:

@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

            View rootView = inflater.inflate(R.layout.messages, container, false);

            Button button = (Button) rootView.findViewById(R.id.YOUR_BUTTON_ID_IN_XML); //Binding the button view
            button.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    // Do something in response to button click
                    Intent intent = new Intent (Tab1.this.getActivity(), OTHER-ACTIVITY-CLASS-NAME.class);
                    Tab1.this.getActivity().startActivity(intent);
                }
            });

            return rootView;
        }

我已经发布了一个类似问题的答案,所以为了节省时间,我的答案是:

我遇到了同样的问题,我通过从 firstFragment 类调用我的 MainActivity viewpager 轻松解决了它,然后轻松地将 viewpager 的当前项目设置为您想要的选项卡的索引。

这是我放置在第一个选项卡片段的 onClick 方法中的代码,以便我转到第三个选项卡片段;

ViewPager viewPager = getActivity().findViewById(R.id.simpleViewPager);
viewPager.setCurrentItem(2);

我的回答可能会迟到,但我希望它能帮助其他可能遇到这个挑战的人。

@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

            View rootView = inflater.inflate(R.layout.fragment_tab, container, false);

            Button button = (Button) rootView.findViewById(R.id.button);
            button.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {

                    Intent intent = new Intent (Tab1.this.getActivity(), //your_activity.class);
                    Tab1.this.getActivity().startActivity(intent);
                }
            });

            return rootView;
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM