对于类型错误,未定义findViewById

用户名

我将它用于Button时遇到findViewById错误。我知道该函数是在Activity类中声明的,但是如何在不扩展Activity类的情况下实现该函数。我还有另一个扩展Activity的类,但是我不能将其用于Button Activity,因为我需要的变量在该Activity中。

这是我的课:

public class Activity_Sec extends BroadcastReceiver{
    private static final String LOGCAT = null;
    Button b1;
    final SmsManager sms = SmsManager.getDefault();
    public void onReceive(Context context, Intent intent) {
        final Bundle bundle = intent.getExtras();
        try { if (bundle != null) {
            final Object[] pdusObj = (Object[]) bundle.get("pdus");
            for (int i = 0; i < pdusObj.length; i++) {
                final MediaPlayer mp = MediaPlayer.create(context,R.raw.hospital_alarm);

                SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
                    String phoneNumber = currentMessage.getDisplayOriginatingAddress();
                    String senderNum = phoneNumber;
                    String message = currentMessage.getDisplayMessageBody();
                Log.i("SmsReceiver", "senderNum: "+ senderNum + "; message: " + message);

                int duration = Toast.LENGTH_SHORT;
                Toast toast = Toast.makeText(context, "senderNum: "+ senderNum + ", message: " + message, duration);
                toast.show();

                String serverNumber= "+9198xxxxxxx";
                b1 = (Button)findViewById(R.id.button1);
                if(senderNum.equals(serverNumber)){
                    Toast toast1 = Toast.makeText(context,"alert message received!!!!",Toast.LENGTH_LONG);
                    toast1.show();
                    mp.start();
                }
                b1.setOnClickListener(new OnClickListener(){ public void onClick(View v){
                    String phoneNumber = "+9198xxxxxxxx";
                    String message = "Ambulance sent!";
                    mp.stop();
                    mp.release();
                    SmsManager smsManager = SmsManager.getDefault();
                    smsManager.sendTextMessage(phoneNumber, null, message, null, null);
                }});
            }
        }} catch (Exception e) { Log.e("SmsReceiver", "Exception smsReceiver" +e); }
    }
}
拉贡南丹

BroadcastReceiverfindViewById是一种方法时,您的类会扩展Activity

您可以在活动中注册BroadCast。然后执行Activity类本身所需的任何操作

Activity_Sec sec = new Activity_Sec()
registerReceiver(broadCastReceiver, new IntentFilter(
        "some Action"));

您可以使BroadCasterReceiver成为Activity类的内部类

您可以注销 onPause

或者

您可以使用接口作为活动的回调

或者

使用EventBus

https://github.com/greenrobot/EventBus

 public interface BReceiver {

 public void returnData(String value); // note type is string

}

在onReceive中

BReceiver br = (BReceiver) context;

然后

br.returnData("your string data")

然后最后在您的Activity中实现该接口。

public class MainActivity extends Activity implements BReceiver{

@Override
public void returnData(String value) {
    // TODO Auto-generated method stub

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

对于类型为String的错误,未定义方法getText()

对于Fragment02类型,未定义方法findViewById()

对于类型HttpServletRequest的getDispatcherType()未定义

对于(乌龟)类型未定义

类型错误 .then 未定义

对于类型ArrayList <Team>,未定义方法getTeamName()-错误代码,Java

对于“可选”类型,获取“方法isEmpty()未定义”。Java文件中的错误

为什么Firebug对于未定义的属性不显示“未捕获的类型错误”?

错误:运算符|| 对于参数类型boolean,char,未定义

错误“对于参数类型 int, Box 未定义运算符 *”

片段未定义findViewById

AJAX 类型错误:查询未定义

类型错误:RADIOBUTTON [i]是未定义

类型错误:历史未定义

未定义的元组的python类型错误

解决类型错误:事件未定义

AnyLogic getHomeLocation()错误“类型未定义”

类型错误:this.getResults(...) 未定义

对于类型EditText,未定义方法getTexttActivity(Intent)

方法 compareTo(ITestNGMethod) 对于 ITestNGMethod 类型是未定义的

对于JSONObject类型,未定义getJSONObject(String)

对于类型HttpServletRequest,未定义方法getPart(String)

方法 getType() 对于类型 Ingredient 未定义

对于类型AlertDialog.Builder,未定义方法getWindow()

对于IOUtils类型,未定义方法toByteArray(InputStream)

对于类型JdbcTemplate,未定义方法queryForInt(String)

对于类型Set,未定义方法get(int)

对于类型MainActivity,未定义方法getSupportFragmentManager():android

对于类型为Button的方法,未定义方法getText()