Android按钮不工作

Android按钮不工作,android,button,android-viewpager,Android,Button,Android Viewpager,我无法使按钮函数的setOnClickListener正常工作 我用一个可视传呼机。按钮在一个碎片内。当我点击它时,无论是viewPager还是Button都无法获得焦点 以下是相关代码: 主要活动: package com.paradroid.paradroidalarm; import android.os.Bundle; import android.support.v4.view.ViewPager; import com.actionbarsherlock.app.ActionBa

我无法使按钮函数的setOnClickListener正常工作

我用一个可视传呼机。按钮在一个碎片内。当我点击它时,无论是viewPager还是Button都无法获得焦点

以下是相关代码:

主要活动:

package com.paradroid.paradroidalarm;

import android.os.Bundle;
import android.support.v4.view.ViewPager;

import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.paradroid.adapter.TabsAdapter;

public class MainActivity extends SherlockFragmentActivity {



    private ViewPager mViewPager;
    private TabsAdapter mTabsAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    mViewPager = new ViewPager(this);
    mViewPager.setId(R.id.pager);
    setContentView(mViewPager);

    Fragment_1.ma = this;

    ActionBar bar = getSupportActionBar();
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    mTabsAdapter = new TabsAdapter(this, mViewPager);
    mTabsAdapter.addTab(bar.newTab().setText("Fragment 1"), Fragment_1.class, null);
    mTabsAdapter.addTab(bar.newTab().setText("Fragment 2"), Fragment_2.class, null);
    mTabsAdapter.addTab(bar.newTab().setText("Fragment 3"), Fragment_3.class, null);
    mTabsAdapter.addTab(bar.newTab().setText("Fragment 4"), Fragment_4.class, null);


    }

}
片段1:

add_alarm = (Button)v.findViewById(R.id.add_alarm);
    add_alarm.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {

            Fragment_1.loadTimer();

        }

    });
activity_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:background="#FFFFFF"
    tools:context=".MainActivity" >

    <android.support.v4.view.ViewPager
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/pager" />



</RelativeLayout>

fragment_1.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/root_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/alarm_face"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"
        android:src="@drawable/final_icon_smile" />

    <Button
        android:id="@+id/add_alarm"
        android:layout_width="60dp"
        android:layout_height="40dp"
        android:layout_margin="5dp"
        android:background="#F0F0F0"
        android:text="caca"
        android:textColor="#000000"
        android:textSize="13sp" />

    <TextView
        android:id="@+id/instructions_text"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:background="@drawable/rounded_edges_in"
        android:gravity="center"
        android:padding="5dp"
        android:text="@string/instructions1"
        android:textColor="#FFFFFF"
        android:textSize="15sp"
        android:textStyle="bold"
        android:typeface="serif" >
    </TextView>

    <ListView
        android:id="@+id/listAlarm"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_margin="4dp"
        android:background="@drawable/rounded_edges_lv"
        android:cacheColorHint="@android:color/transparent"
        android:divider="#808080"
        android:dividerHeight="1px" >
    </ListView>

</LinearLayout>

正如我所说的,我首先怀疑viewPager在进入下一个视图之前拦截了所有点击,但事实证明并非如此。我找不到任何窃听器

编辑: TabsAdapter:

package com.paradroid.adapter;

import java.util.ArrayList;

import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.widget.Toast;

import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.ActionBar.Tab;
import com.actionbarsherlock.app.SherlockFragmentActivity;

public class TabsAdapter extends FragmentPagerAdapter implements ActionBar.TabListener , ViewPager.OnPageChangeListener{
    private final Context mContext;
    private final ActionBar mActionBar;
    private final ViewPager mViewPager;
    private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>();
    private final String TAG = "21st Polling:";

    static final class TabInfo{
        private final Class<?> clss;
        private final Bundle args;

        TabInfo(Class<?> _class, Bundle _args){
            clss = _class;
            args = _args;
        }
    }

    public TabsAdapter(SherlockFragmentActivity fa, ViewPager pager) {
        super(fa.getSupportFragmentManager());
        mContext = fa;
        mActionBar = fa.getSupportActionBar();
        mViewPager = pager;
        mViewPager.setAdapter(this);
        mViewPager.setOnPageChangeListener(this);
    }

    public void addTab(ActionBar.Tab tab, Class<?> clss, Bundle args){
        TabInfo info = new TabInfo(clss, args);
        tab.setTag(info);
        tab.setTabListener(this);
        mTabs.add(info);
        mActionBar.addTab(tab);
        notifyDataSetChanged();
    }

    @Override
    public void onPageScrollStateChanged(int state) {


    }

    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {


    }

    @Override
    public void onPageSelected(int position) {
        mActionBar.setSelectedNavigationItem(position);

    }

    @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        mViewPager.setCurrentItem(tab.getPosition());
        Log.v(TAG, "clicked");
        Object tag = tab.getTag();
        for (int i = 0; i<mTabs.size(); i++){
            if (mTabs.get(i) == tag){
                mViewPager.setCurrentItem(i);
            }
        }

    }

    @Override
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
        Toast.makeText(mContext, "You've deselected a tab", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onTabReselected(Tab tab, FragmentTransaction ft) {

    }

    @Override
    public Fragment getItem(int position) {
        TabInfo info = mTabs.get(position);
        return Fragment.instantiate(mContext, info.clss.getName(), info.args);
    }

    @Override
    public int getCount() {
        return mTabs.size();
    }

}
包com.paradroid.adapter;
导入java.util.ArrayList;
导入android.content.Context;
导入android.os.Bundle;
导入android.support.v4.app.Fragment;
导入android.support.v4.app.FragmentPagerAdapter;
导入android.support.v4.app.FragmentTransaction;
导入android.support.v4.view.ViewPager;
导入android.util.Log;
导入android.widget.Toast;
导入com.actionbarsherlock.app.ActionBar;
导入com.actionbarsherlock.app.ActionBar.Tab;
导入com.actionbarsherlock.app.SherlockFragmentActivity;
公共类TabsAdapter扩展FragmentPagerAdapter实现ActionBar.TablListener、ViewPager.OnPageChangeListener{
私有最终上下文mContext;
私人终审法院;
专用最终查看页面mViewPager;
private final ArrayList mtab=new ArrayList();
私有最终字符串标记=“第21次轮询:”;
静态最终类TabInfo{
私人期末班;
私有最终包args;
TabInfo(类_类,捆绑参数){
clss=_类;
args=_args;
}
}
公共选项卡适配器(SherlockFragmentActivity fa,ViewPager寻呼机){
super(fa.getSupportFragmentManager());
mContext=fa;
mActionBar=fa.getSupportActionBar();
mViewPager=寻呼机;
mViewPager.setAdapter(此);
mViewPager.setOnPageChangeListener(此);
}
public void addTab(ActionBar.Tab选项卡,类cls,Bundle args){
TabInfo=新的TabInfo(clss,args);
tab.setTag(信息);
tab.setTableListener(此);
添加(信息);
mActionBar.addTab(tab);
notifyDataSetChanged();
}
@凌驾
公共无效onPageScrollStateChanged(int状态){
}
@凌驾
已滚动页面上的公共无效(int-position、float-positionOffset、int-positionOffsetPixels){
}
@凌驾
已选择页面上的公共无效(内部位置){
mActionBar.setSelectedNavigationItem(位置);
}
@凌驾
已选择的公共事务(选项卡,碎片事务ft){
setCurrentItem(tab.getPosition());
Log.v(标记“点击”);
Object tag=tab.getTag();

对于(int i=0;i来说,在XML中更容易看到
onClick
:android:onClick=“onClickName”

在您的主要活动中,放置:

public void onClickName (View v) {
    // Do your stuff
}

我不明白你所说的“viewPager和Button都不能获得焦点”是什么意思。

但是你必须将
适配器设置到你的
viewPager
?用适配器编辑。