Android:创建“自定义3状态”切换按钮时出现问题

Android:创建“自定义3状态”切换按钮时出现问题,第1张

概述我试图通过覆盖Button类来创建3状态切换按钮.尽管代码中没有错误,但是Eclipse在布局xml中显示了以下问题.以下类无法实例化:-com.example.threewaytoggle.TriToggleButton(OpenClass,ShowErrorLog)SeetheErrorLog(Window>ShowView)formoredetails.Tip:UseVi

我试图通过覆盖button类来创建3状态切换按钮.

尽管代码中没有错误,但是Eclipse在布局xml中显示了以下问题.

以下类无法实例化:

- com.example.threewaytoggle.TriTogglebutton (Open Class, Show Error Log)See the Error Log (Window > Show VIEw) for more details.Tip: Use VIEw.isInEditMode() in your custom vIEws to skip code when shown in Eclipse

在错误日志中,这即将到来:

com.example.threewaytoggle.TriTogglebutton Failed to instantiate.java.lang.NullPointerExceptionat androID.vIEw.VIEw.mergeDrawableStates(VIEw.java:7506)at com.example.threewaytoggle.TriTogglebutton.onCreateDrawableState(TriTogglebutton.java:42)at androID.vIEw.VIEw.getDrawableState(VIEw.java:7410)at androID.vIEw.VIEw.setBackgroundDrawable(VIEw.java:7583)....

以下是代码:
布局xml:

<linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:layout_wIDth="fill_parent"    androID:layout_height="fill_parent"    androID:orIEntation="vertical" >    <com.example.threewaytoggle.TriTogglebutton        androID:ID="@+ID/triTogglebutton1"        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:text="TriTogglebutton" /></linearLayout>

自定义按钮类别:

package com.example.threewaytoggle;import androID.content.Context;import androID.util.AttributeSet;import androID.Widget.button;public class TriTogglebutton extends button {    int _state = 0;    public TriTogglebutton(Context context) {        super(context);        _state = 0;        this.setText("1");    }    public TriTogglebutton(Context context, AttributeSet attrs) {        super(context, attrs);        _state = 0;        this.setText("1");    }    public TriTogglebutton(Context context, AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);        _state = 0;        this.setText("1");    }    private final int[] STATE_ONE_SET = { R.attr.state_one };    private final int[] STATE_TWO_SET = { R.attr.state_two };    private final int[] STATE_THREE_SET = { R.attr.state_three };    @OverrIDe    protected int[] onCreateDrawableState(int extraSpace) {        final int[] drawableState = super.onCreateDrawableState(extraSpace + 3);        if (_state == 0) {            mergeDrawableStates(drawableState, STATE_ONE_SET);        } else if (_state == 1) {            mergeDrawableStates(drawableState, STATE_TWO_SET);        } else if (_state == 2) {            mergeDrawableStates(drawableState, STATE_THREE_SET);        }        return drawableState;    }    @OverrIDe    public boolean performClick() {        nextState();        return super.performClick();    }    private voID nextState() {        _state++;        if (_state > 2) {            _state = 0;        }        setbuttonText();    }    private voID setbuttonText() {        //Todo          }    public int getState() {        return _state;    }}

解决方法:

找到了…

private static final int[] STATE_ONE_SET = { R.attr.state_one };private static final int[] STATE_TWO_SET = { R.attr.state_two };private static final int[] STATE_THREE_SET = { R.attr.state_three };

但是,这怎么会引起问题呢?

总结

以上是内存溢出为你收集整理的Android:创建“自定义3状态”切换按钮时出现问题全部内容,希望文章能够帮你解决Android:创建“自定义3状态”切换按钮时出现问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1075263.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存