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

时间:2017-02-16 18:40:06

标签: java android

我想用Tabview创建一个应用程序,所以我启动了一个带Tabbed Activity和Action Bar选项卡的应用程序(带有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);
    }
}

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

3 个答案:

答案 0 :(得分:0)

首先,您必须在代码中绑定此按钮,然后使用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;
        }

答案 1 :(得分:0)

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

我遇到了同样的问题,我通过从firstFragment类调用MainActivity viewpager轻松解决了这个问题,然后轻松地将viewpager的当前项设置为所需标签的索引。

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

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

我的回答可能太迟了,但我希望它对可能遇到此挑战的其他人有所帮助。

答案 2 :(得分:-1)

@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;
        }