我正在尝试创建一个简单的Android应用程序来模拟远程控制,每按一次按钮都会向连接到本地网络的arduino发送命令。
我下载了源代码并尝试修改它。但是,当我增加按钮数量时,它会成功构建但无法启动。
源代码只有2个按钮。我的修改有15个按钮。 Here is the link to the modified source.任何人都可以解释为什么它不会发布吗?
这里是logcat
02-01 00:25:16.741: E/AndroidRuntime(7318): FATAL EXCEPTION: main
02-01 00:25:16.741:E / AndroidRuntime(7318):进程:com.android.arduino,PID:7318 02-01 00:25:16.741:E / AndroidRuntime(7318):java.lang.RuntimeException:无法启动活动ComponentInfo {com.android.arduino / com.android.arduino.ArduinoActivity}:java.lang.NullPointerException 02-01 00:25:16.741:E / AndroidRuntime(7318):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2305) 02-01 00:25:16.741:E / AndroidRuntime(7318):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363) 02-01 00:25:16.741:E / AndroidRuntime(7318):在android.app.ActivityThread.access $ 900(ActivityThread.java:161) 02-01 00:25:16.741:E / AndroidRuntime(7318):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1265) 02-01 00:25:16.741:E / AndroidRuntime(7318):在android.os.Handler.dispatchMessage(Handler.java:102) 02-01 00:25:16.741:E / AndroidRuntime(7318):在android.os.Looper.loop(Looper.java:157) 02-01 00:25:16.741:E / AndroidRuntime(7318):在android.app.ActivityThread.main(ActivityThread.java:5356) 02-01 00:25:16.741:E / AndroidRuntime(7318):at java.lang.reflect.Method.invokeNative(Native Method) 02-01 00:25:16.741:E / AndroidRuntime(7318):at java.lang.reflect.Method.invoke(Method.java:515) 02-01 00:25:16.741:E / AndroidRuntime(7318):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1265) 02-01 00:25:16.741:E / AndroidRuntime(7318):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081) 02-01 00:25:16.741:E / AndroidRuntime(7318):at dalvik.system.NativeStart.main(Native Method) 02-01 00:25:16.741:E / AndroidRuntime(7318):引起:java.lang.NullPointerException 02-01 00:25:16.741:E / AndroidRuntime(7318):at com.android.arduino.ArduinoActivity.onCreate(ArduinoActivity.java:494) 02-01 00:25:16.741:E / AndroidRuntime(7318):在android.app.Activity.performCreate(Activity.java:5431) 02-01 00:25:16.741:E / AndroidRuntime(7318):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 02-01 00:25:16.741:E / AndroidRuntime(7318):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2269) 02-01 00:25:16.741:E / AndroidRuntime(7318):... 11更多
下面是java文件的代码,原始源代码,我可以在手机上运行这个代码,我通过在布局文件中添加更多按钮来修改代码,只是模仿制作更多按钮作为原始代码,但是,它不起作用
package com.android.arduino;
import android.app.Activity;
import android.content.Context;
import java.net.*;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class ArduinoActivity extends Activity {
/** Called when the activity is first created. */
Button on;
Button off;
Button on1;
Button off1;
String serverHostname1;
DatagramSocket d1;
InetAddress ip,retiip;
DatagramPacket send,rec;
String modifiedSentence;
private Boolean isOnline() {
ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
if(ni != null && ni.isConnected())
return true;
return false;
}
public void led(String s) throws Exception
{
byte[] b=(s.getBytes());
if(isOnline())
{
// byte[] receiveData = new byte[1024];
serverHostname1 = new String ("192.168.1.38");
//Toast.makeText(getApplicationContext(),s,Toast.LENGTH_LONG).show();
ip = InetAddress.getByName(serverHostname1);
//Toast.makeText(getApplicationContext(),"ip",Toast.LENGTH_LONG).show();
//try{
d1 = new DatagramSocket();//}
//catch(Exception e){
// e.printStackTrace();
//Toast.makeText(getApplicationContext(),e.toString(),Toast.LENGTH_LONG).show();
//}
//Toast.makeText(getApplicationContext(),"socket",Toast.LENGTH_LONG).show();
try{
send = new DatagramPacket(b,b.length, ip, 8032);
}catch(Exception e){
//Toast.makeText(getApplicationContext(),e.toString(),Toast.LENGTH_LONG).show();
}
//Toast.makeText(getApplicationContext(),"packet",Toast.LENGTH_LONG).show();
d1.send(send);
//Toast.makeText(getApplicationContext(),"sent",Toast.LENGTH_LONG).show();
//rec = new DatagramPacket(receiveData, receiveData.length);
d1.setSoTimeout(10000);
d1.receive(rec);
modifiedSentence = new String(rec.getData());
InetAddress returnIPAddress = rec.getAddress();
//int port = rec.getPort();
//Toast.makeText(getApplicationContext(),"Reply:"+modifiedSentence,Toast.LENGTH_LONG).show();
Toast.makeText(getApplicationContext(),"Reply from Server:"+returnIPAddress,Toast.LENGTH_LONG).show();
d1.close();
}
else
{
Toast.makeText(getApplicationContext(),"No network",Toast.LENGTH_LONG).show();
}
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
on=(Button)findViewById(R.id.on);
off=(Button)findViewById(R.id.off);
on1=(Button)findViewById(R.id.on1);
off1=(Button)findViewById(R.id.off1);
on.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
try {
//ArduinoActivity a=new ArduinoActivity();
led("1");
Toast.makeText(getApplicationContext(),"ON",Toast.LENGTH_LONG).show();
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("Error::"+e);
}
}
});
off.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
try {
//ArduinoActivity b=new ArduinoActivity();
led("2");
Toast.makeText(getApplicationContext(), "OFF",Toast.LENGTH_LONG).show();
} catch (Exception e) {
//TODO Auto-generated catch block
System.out.println("Error::"+e);
}
}
});
on1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
try {
//ArduinoActivity a=new ArduinoActivity();
led("3");
Toast.makeText(getApplicationContext(),"ON",Toast.LENGTH_LONG).show();
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("Error::"+e);
}
}
});
off1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
try {
//ArduinoActivity b=new ArduinoActivity();
led("4");
Toast.makeText(getApplicationContext(), "OFF",Toast.LENGTH_LONG).show();
} catch (Exception e) {
//TODO Auto-generated catch block
System.out.println("Error::"+e);
}
}
});
}
}