点击时,我试图获取第一个按钮来更新视图中的显示编号。该视图将显示几个按钮和“输出”。在阅读了这里的例子和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的整个设置很尴尬......还在学习。
欢迎任何其他最终评论!
更新更新!! 我也找到了这个;
答案 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;
}
}