Android应用程序已成功编译安装但无法启动,意外停止

时间:2015-01-31 21:23:54

标签: android arduino

我正在尝试创建一个简单的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);
            }

        }
    });

}

}

0 个答案:

没有答案