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