问:ViewPager和OnClickListener

时间:2015-02-21 12:56:37

标签: java android android-activity android-fragments android-viewpager

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

哪里可以写OnClickListener? 如果我在PageOne.java中写OnClickListener我收到错误。因为PageOne Class是扩展Fragment。片段不接受OnClickListener。 如果我在PageOne中创建新类并使用“扩展活动”而不会出现错误但按钮不起作用。

这是Page1:

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

1 个答案:

答案 0 :(得分:0)

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