[英]How to go other Tabs by clicking on a Button from the current Tab in Android?
I trying to write a code in Android, to switch from one tab to another tab by click on a button. 我尝试在Android中编写代码,通过单击按钮从一个选项卡切换到另一个选项卡。
I know to by clicking on tab we can switch from one tab to another but can it be possible to switch from one tab to another tab by clicking on one button. 我知道通过单击选项卡我们可以从一个选项卡切换到另一个选项卡但是可以通过单击一个按钮从一个选项卡切换到另一个选项卡。
I tried the following tutorial. 我尝试了以下教程。
http://www.androidhive.info/2013/10/android-tab-layout-with-swipeable-views-1/ http://www.androidhive.info/2013/10/android-tab-layout-with-swipeable-views-1/
In this tutorial i have edited the MovieFragment.java file in following manner. 在本教程中,我以下列方式编辑了MovieFragment.java文件。
MovieFragment.java MovieFragment.java
package info.androidhive.tabsswipe;
import info.androidhive.tabsswipe.R;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
public class MoviesFragment extends Fragment {
ViewPager viewPager;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState)
{
View rootView = inflater.inflate(R.layout.fragment_movies, container, false);
Button btn = (Button) rootView.findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
viewPager.setCurrentItem(0);
}
});
return rootView;
}}
XML Code : 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"
android:background="#17df0d">
<android.support.v4.view.ViewPager
android:id="@+id/myfivepanelpager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Design Movies Screen"
android:textSize="20dp"
android:layout_centerInParent="true"/>
<Button
android:id="@+id/btn"
android:layout_width="100dp"
android:layout_height="80dp"
android:text="Click"
/>
</RelativeLayout>
I have created a button in the xml layout and trying switch to tab -1 but i am getting Null Pointer Exception. 我已经在xml布局中创建了一个按钮并尝试切换到选项卡-1但我得到了空指针异常。
Error Code: 错误代码:
05-20 09:07:10.995: E/AndroidRuntime(1117): FATAL EXCEPTION: main
05-20 09:07:10.995: E/AndroidRuntime(1117): java.lang.NullPointerException
05-20 09:07:10.995: E/AndroidRuntime(1117): at info.androidhive.tabsswipe.MoviesFragment$1.onClick(MoviesFragment.java:33)
05-20 09:07:10.995: E/AndroidRuntime(1117): at android.view.View.performClick(View.java:4240)
05-20 09:07:10.995: E/AndroidRuntime(1117): at android.view.View$PerformClick.run(View.java:17721)
05-20 09:07:10.995: E/AndroidRuntime(1117): at android.os.Handler.handleCallback(Handler.java:730)
05-20 09:07:10.995: E/AndroidRuntime(1117): at android.os.Handler.dispatchMessage(Handler.java:92)
05-20 09:07:10.995: E/AndroidRuntime(1117): at android.os.Looper.loop(Looper.java:137)
05-20 09:07:10.995: E/AndroidRuntime(1117): at android.app.ActivityThread.main(ActivityThread.java:5103)
05-20 09:07:10.995: E/AndroidRuntime(1117): at java.lang.reflect.Method.invokeNative(Native Method)
05-20 09:07:10.995: E/AndroidRuntime(1117): at java.lang.reflect.Method.invoke(Method.java:525)
05-20 09:07:10.995: E/AndroidRuntime(1117): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
05-20 09:07:10.995: E/AndroidRuntime(1117): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
05-20 09:07:10.995: E/AndroidRuntime(1117): at dalvik.system.NativeStart.main(Native Method)
Please suggest me some solution or some good technique to do it. 请建议我一些解决方案或一些好的技术来做到这一点。
You have to call parent view inside your fragment. 您必须在片段内调用父视图。
public class MoviesFragment extends Fragment {
ViewPager viewPager;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_movies, container, false);
Button btn = (Button) rootView.findViewById(R.id.btn);
viewPager = (ViewPager) getActivity().findViewById(R.id.pager);
btn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
viewPager.setCurrentItem(0);
}
});
return rootView;
}
}
your ViewPager is null because you are not initializing the variable. 您的ViewPager为null,因为您没有初始化变量。
You need do 你需要做
public class MoviesFragment extends Fragment {
ViewPager viewPager;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState)
{
View rootView = inflater.inflate(R.layout.fragment_movies, container, false);
Button btn = (Button) rootView.findViewById(R.id.btn);
viewPager = (ViewPager) rootView.findViewById(R.id.some_viewpager);//Initializing
btn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
viewPager.setCurrentItem(0);
}
});
return rootView;
}}
viewPager = (ViewPager) getActivity().findViewById(R.id.pager);
viewPager.setCurrentItem(0);
inside your fragment 你的片段里面
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.