Android按钮不工作
我无法使按钮函数的setOnClickListener正常工作 我用一个可视传呼机。按钮在一个碎片内。当我点击它时,无论是viewPager还是Button都无法获得焦点 以下是相关代码: 主要活动: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
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
?用适配器编辑。