2014-11-08 72 views
0

我正在学习Android,并尝试一个简单的Android应用程序开发,我从演讲中拿到一个演示代码,老师只需执行以下操作: 有2个按钮,1个textview。当触摸按钮A时,它将在文本视图中显示“文本A”,同时触摸按钮B,它将在文本视图中显示“文本B”。Android TextView和按钮不能在我的应用程序中工作

我跟踪了代码并重写了它,但是当我使用模拟器运行时,我无法得到正确的结果。

当我触摸任一按钮时,TextView中没有内容。但是我的老师的参考代码的工作:

import android.view.View; 
import android.widget.TextView; 
import android.os.Bundle; 
import android.app.Activity; 

public class ActTwo extends Activity { 

    private TextView tv; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     this.setContentView(R.layout.activity_act_two); 
     tv = (TextView) this.findViewById(R.id.textView2); 
    } 

    public void report(View v) { 
     if(v.getId() == R.id.button1) 
      tv.setText(R.string.anrep); 
     else 
      tv.setText(R.string.iprep); 
    } 

} 

如何report(View v)叫什么名字?我无法理解这个班级是如何被调用的。有人可以帮我吗?

回答

1

你需要让你的按钮知道,按下后,应该调用report()。这可以通过您的按钮的android:onClick属性上做布局的XML:

<Button 
android:id="@+id/button1" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:text="@string/button_text" 
android:onClick="report" /> 

或者通过代码,附加一个OnClickListener到按钮:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.setContentView(R.layout.activity_act_two); 
    button1 = (Button) this.findViewById(R.id.button1); 
    button1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      report(v); 
     } 
    }); 
} 

希望它能帮助。

+0

非常感谢!我习惯于引入IBAction的iOS。哇,Android这样做! – 2014-11-08 21:20:32

0

您应该实施View.OnClickListener,并覆盖该方法OnClick。您还需要按钮上的setOnClickListener。所以,你的代码应该是这样的:

import android.view.View; 
import android.widget.TextView; 
import android.os.Bundle; 
import android.app.Activity; 

public class ActTwo extends Activity implements View.OnClickListener{ 

    private TextView tv; 
    private Button button1, button2; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     this.setContentView(R.layout.activity_act_two); 
     tv = (TextView) this.findViewById(R.id.textView2); 

     button1 = (Button) findViewById(R.id.button1); 
     button1.setOnClickListener(this); 

     button2 = (Button) findViewById(R.id.button2); 
     button2.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     if(v.getId() == R.id.button1) 
      tv.setText(R.string.anrep); 
     else 
      tv.setText(R.string.iprep); 
    } 
} 
+0

谢谢!这个想法帮助我! – 2014-11-08 21:21:25

0
import android.view.View; 
import android.widget.TextView; 
import android.os.Bundle; 
import android.app.Activity; 

public class ActTwo extends Activity { 

    private TextView tv; 

    private Button button1, button2; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     this.setContentView(R.layout.activity_act_two); 
     tv = (TextView) this.findViewById(R.id.textView2); 
     button1 =(Button)this.findViewById(R.id.button1); 
     button1.setOnClickListener(new OnClickListener(){ 
      public void onClick(View v){ 
       report(v); 
      } 
     }); 
     button2 =(Button)this.findViewById(R.id.button2): 
     button2.setOnClickListener(new OnClickListener(){ 
      public void onClick(View v){ 
       report(v); 
      } 
     }); 
    } 

    public void report(View v) { 
     if(v.getId() == R.id.button1) 
      tv.setText(R.string.anrep); 
     else 
      tv.setText(R.string.iprep); 
    } 

} 
相关问题