startChronometer在主活动中声明方法时,如何在另一个类中调用该方法?
内部MainActivity:
public void startChronometer() {
mChronometer.start();
showElapsedTime();
}
Run Code Online (Sandbox Code Playgroud)
在另一个课程中,我试图这样做:
MainActivity mActivity;
mActivity.startChronometer();
Run Code Online (Sandbox Code Playgroud)
但是发生了一个错误:
java.lang.NullPointerException.
Run Code Online (Sandbox Code Playgroud)
我可以知道还需要添加什么代码吗?
如何将处理程序从活动传递到服务?我正在尝试使用Handler更新有关蓝牙连接状态的活动UI,如下所示从服务类.
mHandler.obtainMessage(MenuActivity.MESSAGE_STATE_CHANGE, state, -1).sendToTarget();
Run Code Online (Sandbox Code Playgroud)
在活动中,我实现了这个:
public void handleMessage(Message msg) {
switch (msg.what) {
case MESSAGE_STATE_CHANGE:
if (true)
Log.i(TAG, "MESSAGE_STATE_CHANGE: " + msg.arg1);
switch(msg.arg1){
case BluetoothService.STATE_CONNECTED:
showToast("Connected to " + mConnectedDeviceName, Toast.LENGTH_SHORT);
break;
Run Code Online (Sandbox Code Playgroud)
我试图使用构造函数将处理程序从活动传递到服务,如下所示:
public BluetoothService(Handler handler, BluetoothAdapter mBluetoothAdapter) {
mAdapter = mBluetoothAdapter;
mState = STATE_NONE;
mHandler = handler;
}
Run Code Online (Sandbox Code Playgroud)
但是有一个错误显示无法实例化服务并发现该服务需要有一个公共的无参数构造函数.但是在删除构造函数之后,处理程序没有被传递到服务中.
如何解决这个问题呢?
我将此代码上传到Arduino Atmega2560时发生错误.这是我为程序中的.c文件创建的库文件.
错误是:
herkulex.c:16: error: expected '=', ',', ';', 'asm' or '__attribute__' before ':' token
出现错误时,"class"一词会突出显示,该错误位于文件中(如下所示)
#ifndef herkulex_lib
#define herkulex_lib
#include <Arduino.h>
#include <Wire.h>
#include<inttypes.h>
class herkulex
{
public:
herkulex();
void hklx_Init(unsigned long ulBaudRate);
void hklx_SendPacket(DrsPacket stPacket);
unsigned char hklx_ucReceivePacket(DrsPacket *pstPacket);
void hklx_RemoveInvalidData(void);
//no private
};
#endif /* HERKULEX_H_ */
Run Code Online (Sandbox Code Playgroud)
我可以知道这段代码有什么问题吗?谢谢!
当我在canvas对象上使用drawRect()并且在onCreate方法中声明它时,为什么矩形没有显示.
码
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activitymain);
Chronometer stopWatch = (Chronometer)findViewById(R.id.chrono);
mDrawingActivity = (DrawingActivity)findViewById(R.id.the_canvas);
Button b = (Button)findViewById(R.id.startButton);
b.setText("start");
b.setOnClickListener(this);
}
Run Code Online (Sandbox Code Playgroud)
OnDraw()方法
protected void onDraw(Canvas Square)
{
super.onDraw(Square);
Paint squareColor = new Paint();
squareColor.setColor(Color.CYAN); // change the box color to cyan
Square.drawRect(100,100,100,100, squareColor);
return;
}
Run Code Online (Sandbox Code Playgroud)
澄清:即使按钮和计时器也没有显示,程序被强制关闭.