我想写两个按钮,用设置textview来响应事件,在手机上一运行就显示已停止,求高手package com.example.hello;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
private static final int MENU_ABOUT = 0;
private static final int MENU_QUIT = 0; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn1 = (Button)findViewById(R.id.button1);
btn1.setOnClickListener(new ButtonListener());
Button btn2 = (Button)findViewById(R.id.menu_settings);
btn2.setOnClickListener(new ButtonListener1());
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(0,MENU_ABOUT,0,"关于");
menu.add(0,MENU_QUIT,0,"退出");
return true;
}
class ButtonListener implements OnClickListener{
public void onClick(View arg0) {
// TODO Auto-generated method stub
TextView tvView = (TextView)findViewById(R.id.textView1);
tvView.setText("按下了按钮1");
}
}
class ButtonListener1 implements OnClickListener{
public void onClick(View arg0) {
// TODO Auto-generated method stub
TextView tvView = (TextView)findViewById(R.id.textView1);
tvView.setText("按下了按钮2");
}
}}
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
private static final int MENU_ABOUT = 0;
private static final int MENU_QUIT = 0; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn1 = (Button)findViewById(R.id.button1);
btn1.setOnClickListener(new ButtonListener());
Button btn2 = (Button)findViewById(R.id.menu_settings);
btn2.setOnClickListener(new ButtonListener1());
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(0,MENU_ABOUT,0,"关于");
menu.add(0,MENU_QUIT,0,"退出");
return true;
}
class ButtonListener implements OnClickListener{
public void onClick(View arg0) {
// TODO Auto-generated method stub
TextView tvView = (TextView)findViewById(R.id.textView1);
tvView.setText("按下了按钮1");
}
}
class ButtonListener1 implements OnClickListener{
public void onClick(View arg0) {
// TODO Auto-generated method stub
TextView tvView = (TextView)findViewById(R.id.textView1);
tvView.setText("按下了按钮2");
}
}}
private static final int MENU_QUIT = 0;在他下面写private TextView tvView;tvView = (TextView)findViewById(R.id.textView1);
我们一般都把这句话放在onCreat里底下那个class不要了,这么写。
btn1.setOnClickListener(new OnClickListener() { @Override
public void onClick(View arg0) {
tvView.setText("按下了按钮1");
}
});
伤不起啊,我发现问题是在Listener那边,如果我设置两个监听器就会停止运行,一个监听器就能正常运行,环境安卓4.0.3,代码环境也是设置的4.0.3package com.example.hello;import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
TextView tvView = (TextView)findViewById(R.id.textView1);
private static final int MENU_ABOUT = 0;
private static final int MENU_QUIT = 0; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn1 = (Button)findViewById(R.id.button1);
Button btn2 = (Button)findViewById(R.id.button2);
btn1.setOnClickListener(new ButtonListener());
btn2.setOnClickListener(new ButtonListener1());
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(0,MENU_ABOUT,0,"关于");
menu.add(0,MENU_QUIT,0,"退出");
return true;
}
class ButtonListener implements OnClickListener{
public void onClick(View arg0) {
// TODO Auto-generated method stub
tvView.setText("按下了按钮1");
}
}
class ButtonListener1 implements OnClickListener{
public void onClick(View arg0) {
// TODO Auto-generated method stub
tvView.setText("按下了按钮2");
}
}}
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
counterText = (TextView)findViewById(R.id.textview_counter);
startButton = (Button)findViewById(R.id.button_start);
stopButton = (Button)findViewById(R.id.button_stop);
startButton.setOnClickListener(this);
stopButton.setOnClickListener(this);
startButton.setEnabled(true);
stopButton.setEnabled(false);
Intent bindIntent = new Intent(MainActivity.this, CounterService.class);
bindService(bindIntent, serviceConnection, Context.BIND_AUTO_CREATE);
Log.i(LOG_TAG,"Main Activity Created.");
EditText et = new EditText(this);
et.setInputType(InputType.TYPE_CLASS_NUMBER);
et.getInputType();
} @Override
public void onClick(View arg0) {
if(arg0.equals(startButton)){
if(counterService!=null){
counterService.startCounter(0);
startButton.setEnabled(false);
stopButton.setEnabled(true);
}
}else if(arg0.equals(stopButton)){
if(counterService!=null){
counterService.stopCounter();
try {
Thread.sleep(900);
stopButton.setEnabled(false);
startButton.setEnabled(true);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
TextView tvView = (TextView)findViewById(R.id.textView1); 改成
TextView tvView = null;
然后在OnCreate()中添加
tvView=(TextView)findViewById(R.id.textView1);
是完全可以运行的!