需要帮助让按钮工作

时间:2010-04-06 19:20:47

标签: android

点击时,我试图获取第一个按钮来更新视图中的显示编号。该视图将显示几个按钮和“输出”。在阅读了这里的例子和Q之后,我终于把一些东西放在一起运行,但是我的第一个按钮仍然没有工作;

   public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.ship_layout);
        mSwitcher = (TextSwitcher) findViewById(R.id.eng_val);
        }

    private TextSwitcher mSwitcher;

        // Will be connected with the buttons via XML
        void onClick(View v){

            switch (v.getId()) {
            case R.id.engplus:
                engcounter++;
                updateCounter();
                break;
            case R.id.engneg:
                engcounter--;
                updateCounter();
                break;
            }
        }
    private void updateCounter() {
        mSwitcher.setText(String.valueOf(engcounter));
    }

此按钮的.xml是;

     <TextSwitcher
    android:id="@+id/eng_val"
    android:visibility="visible"
    android:paddingTop="9px"
    android:paddingLeft="50px"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/build"
    android:layout_toRightOf="@+id/engeq"
    android:textColor="#DD00ff00"
    android:textSize="24sp"/>       

这是在相对布局内显示,否则确定。当我将视图设置为具有设置为字符串的数字的TextView时,显示的数字,但我无法弄清楚如何使用数字字段更新文本。这可能是我真正的问题。

我已经阅读了一些通常从开发中引用的示例。网站(用户界面,常见任务,各种样本),我仍然没有看到这里的连接...

同样,这只是尝试获取变量以响应按钮并更新视图。

所以,对于任何可以提供帮助的人来说都有一些问题;

1)有没有更简单的方法(即向View发送数值)? 2)为什么我的TextSwitcher不显示数字? 3)我应该在这里使用TextSwitcher吗? 4)你能指出我的任何例子吗?

更新!!!:带反馈的按钮现在正在运行。这是我的修复,基于反馈,研究和运气;

public class Myview extends Myapp实现了ViewSwitcher.ViewFactory, View.OnClickListener {

public int engcounter = 1;
private TextSwitcher mSwitcher;

@Override
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.my_layout);
        mSwitcher = (TextSwitcher) findViewById(R.id.eng_val);
        mSwitcher.setFactory(this);


    Button engp = (Button) findViewById(R.id.engplus);
    engp.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view){
        engcounter++;
        updateCounter();
        }
    });

    Button engn = (Button) findViewById(R.id.engneg);
    engn.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view){
        engcounter--;
        updateCounter();       
        }   
    });

   }
    private void updateCounter() {
        mSwitcher.setText(String.valueOf(engcounter));
    }
    public View makeView() {
        TextView t = new TextView(this);
        t.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
        t.setTextSize(36);
        return t;
    }
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

}

目前有些内容似乎没有必要(例如makeView上的Gravity),但它确实有效!并且应该为我想做的10-20个按钮工作。

关键是让听众说得对,而且TextSwitcher的整个设置很尴尬......还在学习。

欢迎任何其他最终评论!

更新更新!! 我也找到了这个;

http://developer.android.com/resources/articles/ui-1.6.html

2 个答案:

答案 0 :(得分:2)

您的TextSwitcher未显示数字,因为您需要在onCreate()方法中设置按钮的OnClickListener。目前你的onClick()方法永远不会被调用。

将此添加到您的onCreate:

Button plus = (Button) findViewById(R.id.engplus);
plus.setOnClickListener(this);
Button neg = (Button) findViewById(R.id.engneg);
neg.setOnClickListener(this);

确保您的班级实施View.OnClickListener

至于它们是一种更容易在TextView中显示数值的方法,你可以这样做。您必须将String传递给setText(),并且将数字转换为字符串的方式很好。

答案 1 :(得分:-2)

我需要查看更多代码,以确切了解出现了什么问题,但这是来自android developer site的api演示。我的猜测是你需要实现ViewSwitcher ViewFactory和View OnClickListener。我看到你点击了但修饰符不匹配,我在你的代码中看不到make view方法。

 
public class TextSwitcher1 extends Activity implements ViewSwitcher.ViewFactory,
        View.OnClickListener {

    private TextSwitcher mSwitcher;

    private int mCounter = 0;

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

        setContentView(R.layout.text_switcher_1);

        mSwitcher = (TextSwitcher) findViewById(R.id.switcher);
        mSwitcher.setFactory(this);

        Animation in = AnimationUtils.loadAnimation(this,
                android.R.anim.fade_in);
        Animation out = AnimationUtils.loadAnimation(this,
                android.R.anim.fade_out);
        mSwitcher.setInAnimation(in);
        mSwitcher.setOutAnimation(out);

        Button nextButton = (Button) findViewById(R.id.next);
        nextButton.setOnClickListener(this);

        updateCounter();
    }

    public void onClick(View v) {
        mCounter++;
        updateCounter();
    }

    private void updateCounter() {
        mSwitcher.setText(String.valueOf(mCounter));
    }

    public View makeView() {
        TextView t = new TextView(this);
        t.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
        t.setTextSize(36);
        return t;
    }
}