问:ViewPager 和 OnClickListener

Q: ViewPager and OnClickListener

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

哪里可以写OnClickListener? İf 我在 PageOne.java 中编写 OnClickListener 我收到错误。因为PageOne Class 是extends Fragment。片段不接受 OnClickListener。 İf 我在 PageOne 中创建新 class 并使用 "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);
}
}

可以使用的解决方案之一是在片段的 RootView 中定义 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;
}