【问题标题】:How to go other Tabs by clicking on a Button from the current Tab in Android?如何通过单击 Android 中当前选项卡中的按钮来转到其他选项卡?
【发布时间】:2014-05-20 17:02:31
【问题描述】:

我尝试在 Android 中编写代码,通过单击按钮从一个选项卡切换到另一个选项卡。

我知道通过单击选项卡我们可以从一个选项卡切换到另一个选项卡,但是可以通过单击一个按钮从一个选项卡切换到另一个选项卡。

我尝试了以下教程。

http://www.androidhive.info/2013/10/android-tab-layout-with-swipeable-views-1/

在本教程中,我以下列方式编辑了 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 代码:

<?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>

我在 xml 布局中创建了一个按钮并尝试切换到选项卡 -1,但出现空指针异常。

错误代码:

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)

请给我一些解决方案或一些好的技术。

【问题讨论】:

    标签: android button tabs android-viewpager


    【解决方案1】:

    您必须在片段中调用父视图。

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

    【讨论】:

      【解决方案2】:

      您的 ViewPager 为空,因为您没有初始化变量。

      你需要做的

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

      【讨论】:

      • 是因为您的 XML 中没有 ViewPager,请在您的 XML 中添加 ViewPager 或查看此示例androidtrainningcenter.blogspot.mx/2012/10/…
      • 是的,我已经编辑了我的 XML 代码并在 xml 代码中添加了一个 ViewPager,但是单击按钮后没有任何事件...请帮帮我...请通过我的 XML 代码再次...
      【解决方案3】:
         viewPager = (ViewPager) getActivity().findViewById(R.id.pager);
           viewPager.setCurrentItem(0);
      

      在你的片段中

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多