安卓按钮。performclick()java。lang.NullPointerException
我正在尝试修改应用程序以添加其他功能。我有一个像这样的函数
public class MainActivity extends Activity implements RadioGroup.OnCheckedChangeListener {
private static final int REQUEST_SELECT_DEVICE = 1;
private static final int REQUEST_ENABLE_BT = 2;
public static final String TAG = "nRFUART";
private static final String TAG1 = "smsTAG";
private static final int UART_PROFILE_CONNECTED = 20;
private static final int UART_PROFILE_DISCONNECTED = 21;
public static String content = null;
private int mState = UART_PROFILE_DISCONNECTED;
private UartService mService = null;
private BluetoothDevice mDevice = null;
private BluetoothAdapter mBtAdapter = null;
private ListView messageListView;
private ArrayAdapter<String> listAdapter;
public Button btnConnectDisconnect,btnSend;
private EditText edtMessage;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mBtAdapter = BluetoothAdapter.getDefaultAdapter();
if (mBtAdapter == null) {
Toast.makeText(this, "Bluetooth is not available", Toast.LENGTH_LONG).show();
}else{
btnConnectDisconnect=(Button) findViewById(R.id.btn_select);
btnSend=(Button) findViewById(R.id.sendButton);
edtMessage = (EditText) findViewById(R.id.sendText);
mBtAdapter = BluetoothAdapter.getDefaultAdapter();
messageListView = (ListView) findViewById(R.id.listMessage);
listAdapter = new ArrayAdapter<String>(this, R.layout.message_detail);
messageListView.setAdapter(listAdapter);
messageListView.setDivider(null);
//Call receiveBroadCast like this
receiveBroadCast(getIntent().getStringExtra("message"));
service_init();
}
...
// Handle Send button
btnSend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText editText = (EditText) findViewById(R.id.sendText);
// String message = editText.getText().toString();
String message = content;
byte[] value;
try {
//send data to service
value = message.getBytes("UTF-8");
mService.writeRXCharacteristic(value);
//Update the log with time stamp
String currentDateTimeString = DateFormat.getTimeInstance().format(new Date());
listAdapter.add("["+currentDateTimeString+"] TX: "+ message);
messageListView.smoothScrollToPosition(listAdapter.getCount() - 1);
edtMessage.setText("");
Log.i(TAG1, "success, value: " + value + " message: " + message);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.i(TAG1, "fail" + e.toString());
}
}
});
...
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public void receiveBroadCast(String text) {
btnSend=(Button) findViewById(R.id.sendButton);
Log.i(TAG1, "test " + text);
try {
Log.i(TAG1, "success " + text);
content = text;
btnSend.performClick();
} catch (Exception e) {
Log.i(TAG1, "fail " + e.toString());
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
但是当我运行代码时,我得到了错误
java.lang.NullPointerException: Attempt to invoke virtual method '安卓.view.View 安卓.view.Window.findViewById(int)' on a null object reference
这是主要的。包含我的按钮的xml文件
<Button
安卓:id="@+id/sendButton"
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:layout_alignParentRight="true"
安卓:layout_alignParentBottom="true"
安卓:layout_marginRight="0dp"
安卓:layout_marginBottom="0dp"
安卓:enabled="false"
安卓:text="Send" />
知道是什么导致了这个错误吗
每次我向receiveBroadcast提供字符串时,我都试图使我的receiveBroadcast自动单击Send按钮
这是我用来调用receiveBroadcast的SMSReceiver类:
public class SmsReceiver extends BroadcastReceiver {
private static final String TAG = "MyBroadcastReceiver";
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals("安卓.provider.Telephony.SMS_RECEIVED")) {
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
if (bundle != null){
try{
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
for(int i=0; i<msgs.length; i++){
msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
String msgBody = msgs[i].getMessageBody();
Log.i(TAG, " success " + msgBody);
MainActivity Text = new MainActivity();
Text.receiveBroadCast(msgBody);
Intent intentsms = new Intent(context, MainActivity.class);
intentsms.putExtra("message", msgBody);
context.startActivity(intentsms);
}
} catch(Exception e) {
Log.i(TAG, e.toString());
}
}
}
}
}
# 1 楼答案
检查以下实现: