java - 如何为按钮指定方法?

  显示原文与译文双语对照的内容
0 0

这个问题看起来相当愚蠢,但是我花了很多时间尝试解决它。 问题是,如果我尝试在普通Java中使用的任何解决方案,Eclipse IDE 会给我带来许多不同的错误。 另外,在实现接口之后,我收到了一个错误,Eclipse 将我的类更改为抽象。 源代码是:


public class analyzer extends Activity {
TextView dateAndTimeLabel;
private Button closeButton;
private int signalDBm = 0;

 public class GetParams extends PhoneStateListener 
 {

 @Override 
 public void onSignalStrengthsChanged(SignalStrength signalStrength)
 {
 super.onSignalStrengthsChanged(signalStrength);
 signalDBm = signalStrength.getGsmSignalStrength();
 }
 }
@Override
public void onCreate(Bundle icicle) {
 super.onCreate(icicle);
 setContentView(R.layout.main);

 TextView tv = (TextView)findViewById(R.id.text);
 tv.setText("Greetings, My Lord");
 EditText fld=(EditText)findViewById(R.id.field);
 fld.setText("Nothing here at the moment"); 


 new GetParams();

 Button btn=(Button)findViewById(R.id.start);
 btn.setOnClickListener(this);

 btn=(Button)findViewById(R.id.stop);
 btn.setOnClickListener(new View.OnClickListener() {
 public void onClick(View v) {

 }
 });

/**updateLabel();*/
/**Zakritie programmi*/
 this.closeButton = (Button)this.findViewById(R.id.end);
 this.closeButton.setOnClickListener(new OnClickListener() {
 public void onClick(View v) {
 finish();
 }
 });
/**Prosmotr loga*/

 Button btn_log=(Button)findViewById(R.id.viewlog);
 btn_log.setOnClickListener(new View.OnClickListener() {
 public void onClick(View v) {
 TextView tv = (TextView)findViewById(R.id.text);
 tv.setText("U pressed the button, now you will die!");
 EditText fld=(EditText)findViewById(R.id.field);
 fld.setText("Power:" + signalDBm +" dBmn" +"BER:... n" +"Coordinates:.. . n"); 
 };
 });
}

@Override
public void onClick(View v) {
switch (v.getId()) {
 case R.id.start:
 Toast.makeText(this,"GSM signal strength is" + signalDBm, Toast.LENGTH_SHORT).show();
 break;
 }
}

};

因此,有一个类 GetParams,它的方法 signalStrength.getGsmSignalStrength() 。 还有一件事我可以添加,SignalStrength() 类没有 public 构造函数,这是我可以获得方法 getGsmSignalStrength()的唯一方法。 我很高兴,如果有人能帮助我,因为我的工作已经停止,直到我找到一个解决方案。

时间: 原作者:

0 0

只要信号强度改变,PhoneStateListener就会将信号强度写入局部变量 signalDBM 。 你的Activity 实现了 onclicklistener onClick()的方法。 在这里你读取signalDBM的值并将它传递给 toast 。


package de.test;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.telephony.PhoneStateListener;
import android.telephony.SignalStrength;
import android.telephony.TelephonyManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class analyzer extends Activity implements OnClickListener{ 
 TextView dateAndTimeLabel;
 private Button closeButton; 
 private int signalDBM = 0;

 public class GetParams extends PhoneStateListener 
 {

 @Override 
 public void onSignalStrengthsChanged(SignalStrength signalStrength)
 {
 super.onSignalStrengthsChanged(signalStrength);
 signalDBM = signalStrength.getGsmSignalStrength();
 }
 }

 @Override
 public void onCreate(Bundle icicle) {
 super.onCreate(icicle);
 setContentView(R.layout.main);

 GetParams listener = new GetParams();
 TelephonyManager TelManager = ( TelephonyManager )getSystemService(Context.TELEPHONY_SERVICE);
 TelManager.listen(listener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);

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


 @Override
 public void onClick(View v) {
 switch (v.getId()) {
 case R.id.start:
 Toast.makeText(this,"GSM signal strength is" + this.signalDBM, Toast.LENGTH_SHORT).show();
 break; 
 }
 } 
}

Manifest.xml file:


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="de.test"
 android:versionCode="1"
 android:versionName="1.0">
 <application android:icon="@drawable/icon" android:label="@string/app_name">
 <activity android:name=".analyzer"
 android:label="@string/app_name">
 <intent-filter>
 <action android:name="android.intent.action.MAIN"/>
 <category android:name="android.intent.category.LAUNCHER"/>
 </intent-filter>
 </activity>

 </application>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
</manifest> 

原作者:
...