Java Q:ViewPager和OnClickListener

Java Q:ViewPager和OnClickListener,java,android,android-activity,android-fragments,android-viewpager,Java,Android,Android Activity,Android Fragments,Android Viewpager,OnClickListener无法与ViewPager一起使用。没有ViewPager工作。我正在开节目。程序正在运行。但当我按下按钮时,按钮不工作 你可以在哪里写一封信? 如果我在PageOne.java中编写OnClickListener,我会出错。因为PageOne类是扩展片段。片段不接受OnClickListener。 İf我在PageOne中创建了新类,并使用extends activity未获得错误但按钮不工作 以下是第1页: package my.myapplication; i

OnClickListener无法与ViewPager一起使用。没有ViewPager工作。我正在开节目。程序正在运行。但当我按下按钮时,按钮不工作

你可以在哪里写一封信? 如果我在PageOne.java中编写OnClickListener,我会出错。因为PageOne类是扩展片段。片段不接受OnClickListener。 İf我在PageOne中创建了新类,并使用extends activity未获得错误但按钮不工作

以下是第1页:

package my.myapplication;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;

import java.util.zip.Inflater;

public class PageOne extends Fragment {

    public View onCreateView (LayoutInflater inflater,ViewGroup container, Bundle SavedInstanceState) {

        if (container==null) {
            return null;
        }
        return (LinearLayout) inflater.inflate(R.layout.pageone, container, false);
    }
}
这是PageAdapter

package my.myapplication;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;

/**
 * Created by Administrator on 19.02.2015.
 */
public class PageAdapter extends FragmentActivity

    {

        ViewPager viewPager = null;
        @Override
        protected void onCreate (Bundle enes){
        super.onCreate(enes);
        setContentView(R.layout.activity_main);
        viewPager = (ViewPager) findViewById(R.id.pager);
        FragmentManager fragmentManager=getSupportFragmentManager();
        viewPager.setAdapter(new MyAdapter(fragmentManager));
    }
    }

    class MyAdapter extends FragmentPagerAdapter
    {
        public MyAdapter(FragmentManager fm) {
            super(fm);
        }

        public Fragment getItem (int i) {
            Fragment fragment=null;
            if(i==0)
            {
                fragment=new SSoruBir();
            }
            if(i==1)
            {
                fragment=new SoruIki();
            }
            if(i==2)
            {
                fragment=new SoruUc();
            }
            return fragment;
        }

        public int getCount() {
            return 3;
        }

        String aa = "SORU 1";


        @Override
        public CharSequence getPageTitle(int position) {
            String title = new String();
            if (position == 0) {
                return aa;
            }
            if (position == 1) {
                return "SORU 2";
            }
            if (position == 2) {
                return "SORU 3";
            }
            return null;
        }

}
**新更新**

SSoruBir.java
package benim.myapplication;

import android.graphics.Color;
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;
import android.widget.Button;
import android.widget.LinearLayout;

import java.util.zip.Inflater;

public class SSoruBir  extends Fragment  {

    View rootView;

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

        super.onCreateView(inflater, container, SavedInstanceState);
        if (rootView != null)
        {
            ViewGroup parent = (ViewGroup) rootView.getParent();
            if (parent != null)
            {
                parent.removeView(rootView);
            }
        }
        try
        {
            rootView = inflater.inflate(R.layout.sorubir, container, false);
        }
        catch (Exception e)
        {

        }

        rootView.setOnClickListener(new View.OnClickListener() {
            Button a;

            public void onClick(View v) {

                a = (Button) rootView.findViewById(R.id.a);
                a.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        a.setBackgroundColor(Color.RED);
                    }
                });
            }
        });

        if (container==null) {
        return null;
    }
    return (LinearLayout) inflater.inflate(R.layout.sorubir, container, false);
    //return inflater.inflate(R.layout.sorubir, container, false);
}
}

可以使用的解决方案之一是在片段的根视图中定义onClickListener

您有一些片段,如SSoruBir,因此在片段中有一个名为onCreateView的方法,如以下代码所示:

@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)
{
    super.onCreateView(inflater, container, savedInstanceState);
    if(rootView != null)
    {
        ViewGroup parent = (ViewGroup) rootView.getParent();
        if (parent != null)
        {
            parent.removeView(rootView);
        }
    }
    try
    {
        // Creating view
        rootView = inflater.inflate(R.layout.fragment_ssorubir, container, false);

    }
    catch(Exception e)
    {

    }

    // Here befor returning the view set your onClickListener
    rootView.setOnClickListener(yourOnClickListener);

    return rootView;
}

是否要为viewPager的每个页面定义onClickListener?是的。我想要这样。为每个片段的根视图设置onClickListener,或者在适配器中定义侦听器并将其传递给片段,然后在片段中将侦听器设置为根视图。我是初学者。什么是rootView?rootView的代码在哪里?你能给我举几个例子吗?AndroidStudio不接受rootView。代码颜色是红色。无法解析符号İ在我的第一页中,我有一个按钮。此按钮不起作用。在片段类上声明rootView:View rootViewOkey我编写此视图rootView错误已消失。但我仍然无法运行我的按钮?请尝试rootView.findviewbydr.id.your_button_id.setOnClickListener而不是rootView.setOnClickListener。。。