Android 在碎片活动中使用onclicklistener?

Android 在碎片活动中使用onclicklistener?,android,Android,我准备了一个onclicklistener列表视图,将其放在选项卡菜单中,但毕竟,我已经注意到这样的事情是不可能的,我不知道可能只是对代码做了一点小小的更改,我就可以实现我所需的,但我的大脑由于欺骗而严重停止了:(: public类MainActivity扩展了FragmentActivity{ 私有最终处理程序=新处理程序(); 专用页滑动选项卡; 私人寻呼机; 专用MyPagerAdapter适配器; 私有可绘制oldBackground=null; 私有int currentColor=0

我准备了一个onclicklistener列表视图,将其放在选项卡菜单中,但毕竟,我已经注意到这样的事情是不可能的,我不知道可能只是对代码做了一点小小的更改,我就可以实现我所需的,但我的大脑由于欺骗而严重停止了:(:

public类MainActivity扩展了FragmentActivity{
私有最终处理程序=新处理程序();
专用页滑动选项卡;
私人寻呼机;
专用MyPagerAdapter适配器;
私有可绘制oldBackground=null;
私有int currentColor=0xFF666666;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tabs=(PagerSlidingTabStrip)findViewById(R.id.tabs);
pager=(ViewPager)findViewById(R.id.pager);
适配器=新的MyPagerAdapter(getSupportFragmentManager());
寻呼机设置适配器(适配器);
最终整数页边距=(整数)
TypedValue.applyDimension(TypedValue.COMPLEX\u UNIT\u DIP,4,getResources()
.getDisplayMetrics());
pager.setPageMargin(页边距);
tabs.setViewPager(寻呼机);
更改颜色(当前颜色);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(R.menu.main,menu);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
开关(item.getItemId()){
案例R.id.行动\联系方式:
QuickContactFragment对话框=新建QuickContactFragment();
show(getSupportFragmentManager(),“QuickContactFragment”);
返回true;
}
返回super.onOptionsItemSelected(项目);
}
私有void changeColor(int newColor){
tabs.setIndicatorColor(新颜色);
//仅在操作栏可用时更改操作栏颜色
if(Build.VERSION.SDK\u INT>=Build.VERSION\u code.HONEYCOMB){
可拉伸彩色可拉伸=新可拉伸彩色(newColor);
可拉伸底部可拉伸=
getResources().getDrawable(R.drawable.actionbar_底部);
LayerDrawable ld=新的LayerDrawable(新的Drawable[]{
彩色可拉深、底部可拉深});
如果(oldBackground==null){
如果(Build.VERSION.SDK_INT)
Build.VERSION\u code.JELLY\u BEAN\u MR1){
ld.setCallback(drawableCallback);
}否则{
getActionBar().setBackgroundDrawable(ld);
}
}否则{
TransitionDrawable td=新的TransitionDrawable(新的
可绘制[]{oldBackground,ld});
//破碎ActionBar容器可拉伸的解决方法
处理
//API 17之前的版本
// https://github.com/android/platform_frameworks_base
/提交/a7cc06d82e45918c37429a59b14545c6a57db4e4
如果(Build.VERSION.SDK_INT)
Build.VERSION\u code.JELLY\u BEAN\u MR1){
td.setCallback(drawableCallback);
}否则{
getActionBar().setBackgroundDrawable(td);
}
td.启动转换(200);
}
oldBackground=ld;
// http://stackoverflow.com/questions/11002691/actionbar- 
来自线程处理程序的setbackgrounddrawable可调零背景
getActionBar().setDisplayShowTitleEnabled(false);
getActionBar().setDisplayShowTitleEnabled(true);
}
currentColor=newColor;
}
已单击的公共空间(视图v){
int color=color.parseColor(v.getTag().toString());
变色;
}
@凌驾
SaveInstanceState上受保护的无效(束超出状态){
super.onSaveInstanceState(超出状态);
outState.putInt(“currentColor”,currentColor);
}
@凌驾
RestoreInstanceState上的受保护无效(Bundle savedInstanceState){
super.onRestoreInstanceState(savedInstanceState);
currentColor=savedInstanceState.getInt(“currentColor”);
更改颜色(当前颜色);
}
private Drawable.Callback drawableCallback=新的Drawable.Callback(){
@凌驾
公共无效可撤销(可撤销who){
getActionBar().setBackgroundDrawable(世卫组织);
}
@凌驾
public void scheduledawable(可提取谁、可运行什么、长时间){
handler.posttime(什么,什么时候);
}
@凌驾
公共无效计划外可撤销(可撤销谁、可运行什么){
handler.removeCallbacks(什么);
}
};
公共类MyPagerAdapter扩展了FragmentPagerAdapter{
私有最终字符串[]标题={“类别”、“家庭”、“最高工资”};
公共MyPagerAdapter(碎片管理器fm){
超级(fm);
}
@凌驾
公共字符序列getPageTitle(int位置){
返回标题[职位];
}
@凌驾
public int getCount(){
返回标题。长度;
}
@凌驾
公共片段getItem(int索引){
开关(索引){
案例0:
//顶级碎片活性
返回新的TopRatedFragment();
案例1:
//游戏片段活动
返回新游戏片段();
案例2:
//电影片段活动
返回新的MoviesFragment();
}
返回null;
}
}
}
这里是我心爱的listview:

 public class PinnedSectionListActivity extends ListActivity implements   
 OnClickListener {

 static class SimpleAdapter extends ArrayAdapter<Item> implements 
 PinnedSectionListAdapter {

    private static final int[] COLORS = new int[] {
        android.R.color.holo_green_light, android.R.color.holo_orange_dark,
        android.R.color.holo_blue_light, android.R.color.holo_red_light };

    public SimpleAdapter(Context context, int resource, int textViewResourceId) {
        super(context, resource, textViewResourceId);

        final int sectionsNumber = 'Z' - 'A' + 1;
        prepareSections(sectionsNumber);

        int sectionPosition = 0, listPosition = 0;
        for (char i=0; i<sectionsNumber; i++) {
            Item section = new Item(Item.SECTION, String.valueOf((char)('A' + i)));
            section.sectionPosition = sectionPosition;
            section.listPosition = listPosition++;
            onSectionAdded(section, sectionPosition);
            add(section);

            final int itemsNumber = (int) Math.abs((Math.cos(2f*Math.PI/3f * 
 sectionsNumber / (i+1f)) * 25f));
            for (int j=0;j<itemsNumber;j++) {
                Item item = new Item(Item.ITEM, 
 section.text.toUpperCase(Locale.ENGLISH) + " - " + j);
                item.sectionPosition = sectionPosition;
                item.listPosition = listPosition++;
                add(item);
            }

            sectionPosition++;
        }
    }

    protected void prepareSections(int sectionsNumber) { }
    protected void onSectionAdded(Item section, int sectionPosition) { }

    @Override public View getView(int position, View convertView, ViewGroup parent) {
        TextView view = (TextView) super.getView(position, convertView, parent);
        view.setTextColor(Color.DKGRAY);
        view.setTag("" + position);
        Item item = getItem(position);
        if (item.type == Item.SECTION) {
            //view.setOnClickListener(PinnedSectionListActivity.this);

 view.setBackgroundColor(parent.getResources().getColor(COLORS[item.sectionPosition % 
 COLORS.length]));
        }
        return view;
    }

    @Override public int getViewTypeCount() {
        return 2;
    }

    @Override public int getItemViewType(int position) {
        return getItem(position).type;
    }

    @Override
    public boolean isItemViewTypePinned(int viewType) {
        return viewType == Item.SECTION;
    }

}

static class FastScrollAdapter extends SimpleAdapter implements SectionIndexer {

    private Item[] sections;

    public FastScrollAdapter(Context context, int resource, int textViewResourceId) {
        super(context, resource, textViewResourceId);
    }

    @Override protected void prepareSections(int sectionsNumber) {
        sections = new Item[sectionsNumber];
    }

    @Override protected void onSectionAdded(Item section, int sectionPosition) {
        sections[sectionPosition] = section;
    }

    @Override public Item[] getSections() {
        return sections;
    }

    @Override public int getPositionForSection(int section) {
        if (section >= sections.length) {
            section = sections.length - 1;
        }
        return sections[section].listPosition;
    }

    @Override public int getSectionForPosition(int position) {
        if (position >= getCount()) {
            position = getCount() - 1;
        }
        return getItem(position).sectionPosition;
    }

 }

static class Item {

    public static final int ITEM = 0;
    public static final int SECTION = 1;

    public final int type;
    public final String text;

    public int sectionPosition;
    public int listPosition;

    public Item(int type, String text) {
        this.type = type;
        this.text = text;
    }

    @Override public String toString() {
        return text;
    }

}

private boolean hasHeaderAndFooter;
private boolean isFastScroll;
private boolean addPadding;
private boolean isShadowVisible = true;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.contacts);
    if (savedInstanceState != null) {
        isFastScroll = savedInstanceState.getBoolean("isFastScroll");
        addPadding = savedInstanceState.getBoolean("addPadding");
        isShadowVisible = savedInstanceState.getBoolean("isShadowVisible");
        hasHeaderAndFooter = 
savedInstanceState.getBoolean("hasHeaderAndFooter");
    }
    initializeHeaderAndFooter();
    initializeAdapter();
    initializePadding();
}

 @Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putBoolean("isFastScroll", isFastScroll);
    outState.putBoolean("addPadding", addPadding);
    outState.putBoolean("isShadowVisible", isShadowVisible);
    outState.putBoolean("hasHeaderAndFooter", hasHeaderAndFooter);
}

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    Item item = (Item) getListView().getAdapter().getItem(position);
    if (item != null) {
        Toast.makeText(this, "Item " + position + ": " + item.text, 
Toast.LENGTH_SHORT).show();
    } else {
        Toast.makeText(this, "Item " + position, Toast.LENGTH_SHORT).show();
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    menu.getItem(0).setChecked(isFastScroll);
    menu.getItem(1).setChecked(addPadding);
    menu.getItem(2).setChecked(isShadowVisible);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.action_fastscroll:
            isFastScroll = !isFastScroll;
            item.setChecked(isFastScroll);
            initializeAdapter();
            break;
        case R.id.action_addpadding:
            addPadding = !addPadding;
            item.setChecked(addPadding);
            initializePadding();
            break;
        case R.id.action_showShadow:
            isShadowVisible = !isShadowVisible;
            item.setChecked(isShadowVisible);
            ((PinnedSectionListView)getListView()).setShadowVisible(isShadowVisible);
            break;
        case R.id.action_showHeaderAndFooter:
            hasHeaderAndFooter = !hasHeaderAndFooter;
            item.setChecked(hasHeaderAndFooter);
            initializeHeaderAndFooter();
            break;
    }
    return true;
}

private void initializePadding() {
    float density = getResources().getDisplayMetrics().density;
    int padding = addPadding ? (int) (16 * density) : 0;
    getListView().setPadding(padding, padding, padding, padding);
}

private void initializeHeaderAndFooter() {
    setListAdapter(null);
    if (hasHeaderAndFooter) {
        ListView list = getListView();

        LayoutInflater inflater = LayoutInflater.from(this);
        TextView header1 = (TextView) 
 inflater.inflate(android.R.layout.simple_list_item_1, list, false);
        header1.setText("First header");
        list.addHeaderView(header1);

        TextView header2 = (TextView) 
 inflater.inflate(android.R.layout.simple_list_item_1, list, false);
        header2.setText("Second header");
        list.addHeaderView(header2);

        TextView footer = (TextView) 
inflater.inflate(android.R.layout.simple_list_item_1, list, false);
        footer.setText("Single footer");
        list.addFooterView(footer);
    }
    initializeAdapter();
}

@SuppressLint("NewApi")
private void initializeAdapter() {
    getListView().setFastScrollEnabled(isFastScroll);
    if (isFastScroll) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
            getListView().setFastScrollAlwaysVisible(true);
        }
        setListAdapter(new FastScrollAdapter(this, 
android.R.layout.simple_list_item_1, android.R.id.text1));
    } else {
        setListAdapter(new SimpleAdapter(this, android.R.layout.simple_list_item_1, 
android.R.id.text1));
    }
}

@Override
public void onClick(View v) {
    Toast.makeText(this, "Item: " + v.getTag() , Toast.LENGTH_SHORT).show();
}

}
公共类PinnedSectionListActivity扩展ListActivity实现
onclick侦听器{
静态类SimpleAdapter扩展了ArrayAdapter实现
PinnedSectionListAdapter{
私有静态最终int[]颜色=新int[]{
android.R.color.holo_绿色_灯,android.R.color.holo_橙色_暗,
android.R.color.holo_蓝光,android.R.color.holo_红灯};
公共SimpleAdapter(上下文上下文、int资源、int文本视图资源ID){
超级(上下文、资源、textViewResourceId);
最终整数部分序号='Z'-'A'+1;
准备章节(章节编号);
int sectionPosition=0,listPosition=0;
for(char i=0;i=getCount()){
position=getCount()-1;
}
返回getItem(位置).sectionPosition;
}
}
静态类项{
公共静态最终整数项=0;
普布利
 public class PinnedSectionListActivity extends ListActivity implements   
 OnClickListener {

 static class SimpleAdapter extends ArrayAdapter<Item> implements 
 PinnedSectionListAdapter {

    private static final int[] COLORS = new int[] {
        android.R.color.holo_green_light, android.R.color.holo_orange_dark,
        android.R.color.holo_blue_light, android.R.color.holo_red_light };

    public SimpleAdapter(Context context, int resource, int textViewResourceId) {
        super(context, resource, textViewResourceId);

        final int sectionsNumber = 'Z' - 'A' + 1;
        prepareSections(sectionsNumber);

        int sectionPosition = 0, listPosition = 0;
        for (char i=0; i<sectionsNumber; i++) {
            Item section = new Item(Item.SECTION, String.valueOf((char)('A' + i)));
            section.sectionPosition = sectionPosition;
            section.listPosition = listPosition++;
            onSectionAdded(section, sectionPosition);
            add(section);

            final int itemsNumber = (int) Math.abs((Math.cos(2f*Math.PI/3f * 
 sectionsNumber / (i+1f)) * 25f));
            for (int j=0;j<itemsNumber;j++) {
                Item item = new Item(Item.ITEM, 
 section.text.toUpperCase(Locale.ENGLISH) + " - " + j);
                item.sectionPosition = sectionPosition;
                item.listPosition = listPosition++;
                add(item);
            }

            sectionPosition++;
        }
    }

    protected void prepareSections(int sectionsNumber) { }
    protected void onSectionAdded(Item section, int sectionPosition) { }

    @Override public View getView(int position, View convertView, ViewGroup parent) {
        TextView view = (TextView) super.getView(position, convertView, parent);
        view.setTextColor(Color.DKGRAY);
        view.setTag("" + position);
        Item item = getItem(position);
        if (item.type == Item.SECTION) {
            //view.setOnClickListener(PinnedSectionListActivity.this);

 view.setBackgroundColor(parent.getResources().getColor(COLORS[item.sectionPosition % 
 COLORS.length]));
        }
        return view;
    }

    @Override public int getViewTypeCount() {
        return 2;
    }

    @Override public int getItemViewType(int position) {
        return getItem(position).type;
    }

    @Override
    public boolean isItemViewTypePinned(int viewType) {
        return viewType == Item.SECTION;
    }

}

static class FastScrollAdapter extends SimpleAdapter implements SectionIndexer {

    private Item[] sections;

    public FastScrollAdapter(Context context, int resource, int textViewResourceId) {
        super(context, resource, textViewResourceId);
    }

    @Override protected void prepareSections(int sectionsNumber) {
        sections = new Item[sectionsNumber];
    }

    @Override protected void onSectionAdded(Item section, int sectionPosition) {
        sections[sectionPosition] = section;
    }

    @Override public Item[] getSections() {
        return sections;
    }

    @Override public int getPositionForSection(int section) {
        if (section >= sections.length) {
            section = sections.length - 1;
        }
        return sections[section].listPosition;
    }

    @Override public int getSectionForPosition(int position) {
        if (position >= getCount()) {
            position = getCount() - 1;
        }
        return getItem(position).sectionPosition;
    }

 }

static class Item {

    public static final int ITEM = 0;
    public static final int SECTION = 1;

    public final int type;
    public final String text;

    public int sectionPosition;
    public int listPosition;

    public Item(int type, String text) {
        this.type = type;
        this.text = text;
    }

    @Override public String toString() {
        return text;
    }

}

private boolean hasHeaderAndFooter;
private boolean isFastScroll;
private boolean addPadding;
private boolean isShadowVisible = true;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.contacts);
    if (savedInstanceState != null) {
        isFastScroll = savedInstanceState.getBoolean("isFastScroll");
        addPadding = savedInstanceState.getBoolean("addPadding");
        isShadowVisible = savedInstanceState.getBoolean("isShadowVisible");
        hasHeaderAndFooter = 
savedInstanceState.getBoolean("hasHeaderAndFooter");
    }
    initializeHeaderAndFooter();
    initializeAdapter();
    initializePadding();
}

 @Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putBoolean("isFastScroll", isFastScroll);
    outState.putBoolean("addPadding", addPadding);
    outState.putBoolean("isShadowVisible", isShadowVisible);
    outState.putBoolean("hasHeaderAndFooter", hasHeaderAndFooter);
}

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    Item item = (Item) getListView().getAdapter().getItem(position);
    if (item != null) {
        Toast.makeText(this, "Item " + position + ": " + item.text, 
Toast.LENGTH_SHORT).show();
    } else {
        Toast.makeText(this, "Item " + position, Toast.LENGTH_SHORT).show();
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    menu.getItem(0).setChecked(isFastScroll);
    menu.getItem(1).setChecked(addPadding);
    menu.getItem(2).setChecked(isShadowVisible);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.action_fastscroll:
            isFastScroll = !isFastScroll;
            item.setChecked(isFastScroll);
            initializeAdapter();
            break;
        case R.id.action_addpadding:
            addPadding = !addPadding;
            item.setChecked(addPadding);
            initializePadding();
            break;
        case R.id.action_showShadow:
            isShadowVisible = !isShadowVisible;
            item.setChecked(isShadowVisible);
            ((PinnedSectionListView)getListView()).setShadowVisible(isShadowVisible);
            break;
        case R.id.action_showHeaderAndFooter:
            hasHeaderAndFooter = !hasHeaderAndFooter;
            item.setChecked(hasHeaderAndFooter);
            initializeHeaderAndFooter();
            break;
    }
    return true;
}

private void initializePadding() {
    float density = getResources().getDisplayMetrics().density;
    int padding = addPadding ? (int) (16 * density) : 0;
    getListView().setPadding(padding, padding, padding, padding);
}

private void initializeHeaderAndFooter() {
    setListAdapter(null);
    if (hasHeaderAndFooter) {
        ListView list = getListView();

        LayoutInflater inflater = LayoutInflater.from(this);
        TextView header1 = (TextView) 
 inflater.inflate(android.R.layout.simple_list_item_1, list, false);
        header1.setText("First header");
        list.addHeaderView(header1);

        TextView header2 = (TextView) 
 inflater.inflate(android.R.layout.simple_list_item_1, list, false);
        header2.setText("Second header");
        list.addHeaderView(header2);

        TextView footer = (TextView) 
inflater.inflate(android.R.layout.simple_list_item_1, list, false);
        footer.setText("Single footer");
        list.addFooterView(footer);
    }
    initializeAdapter();
}

@SuppressLint("NewApi")
private void initializeAdapter() {
    getListView().setFastScrollEnabled(isFastScroll);
    if (isFastScroll) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
            getListView().setFastScrollAlwaysVisible(true);
        }
        setListAdapter(new FastScrollAdapter(this, 
android.R.layout.simple_list_item_1, android.R.id.text1));
    } else {
        setListAdapter(new SimpleAdapter(this, android.R.layout.simple_list_item_1, 
android.R.id.text1));
    }
}

@Override
public void onClick(View v) {
    Toast.makeText(this, "Item: " + v.getTag() , Toast.LENGTH_SHORT).show();
}

}