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