2015-11-08 119 views
-1

你好我是新來的android應用程序開發和Java。我使用了一些來自互聯網的代碼和Android工作室生成的代碼。它需要發送一個字符串通過套接字到wifi屏蔽以控制一艘載有貨物的小船。當我調試我的應用程序時,它開始,但是當我點擊任何按鈕時,它會崩潰。我試圖使用logcat來查找問題,但它沒有顯示任何東西。我使用了一些在stackoverflow中找到的錯誤範圍,並在設備上設置。當我嘗試seekBar應用程序不會崩潰,點擊後不會顯示吐司。android:點擊按鈕後應用程序崩潰

我的代碼運行檢查後,我發現這一點:

「公共」方法buttonConnectOnClickListener()通過接口69行

沒有暴露它表明我對每一個同樣的問題按鈕監聽器,我不知道如何解決它。

這裏是Main.java:

package tomasbenco.kop_android_controller; 

    import android.app.Activity; 
    import android.content.Context; 
    import android.net.ConnectivityManager; 
    import android.net.NetworkInfo; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.widget.Button; 
    import android.widget.SeekBar; 
    import android.widget.Switch; 
    import android.widget.Toast; 

    import java.io.DataOutputStream; 
    import java.io.IOException; 
    import java.net.Socket; 
    import java.net.UnknownHostException; 

    public class Main extends Activity { 
     private Button C1Button = null; 
     private Button C2Button = null; 
     private Switch lightsSwitch = null; 
     private SeekBar RESB = null; 
     private SeekBar LESB = null; 
     private Boolean connected = Boolean.FALSE; 
     private DataOutputStream dataOutputStream = null; 
     private Socket socket = null; 
     private char[] transferReg = new char[7]; 

    private void setTransferReg(char transferReg, int i) { 
     this.transferReg[i] = transferReg; 
    } 

    private char[] getTransferReg() { 
     return transferReg; 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     C1Button = (Button) findViewById(R.id.C1Button); 
     C2Button = (Button) findViewById(R.id.C2Button); 
     lightsSwitch = (Switch) findViewById(R.id.LightsSwitch); 
     RESB = (SeekBar) findViewById(R.id.REseekBar); 
     LESB = (SeekBar) findViewById(R.id.LEseekBar); 
    } 

    private void changeConnectionStatus(Boolean isConnected) { 
     connected = isConnected; 
     if (isConnected) { 
      C1Button.setVisibility(View.VISIBLE); 
      C2Button.setVisibility(View.VISIBLE); 
      lightsSwitch.setVisibility(View.VISIBLE); 
      RESB.setVisibility(View.VISIBLE); 
      LESB.setVisibility(View.VISIBLE); 
     } else { 
      C1Button.setVisibility(View.INVISIBLE); 
      C2Button.setVisibility(View.INVISIBLE); 
      lightsSwitch.setVisibility(View.INVISIBLE); 
      RESB.setVisibility(View.INVISIBLE); 
      LESB.setVisibility(View.INVISIBLE); 
     } 
    } 


    public void buttonConnectOnClickListener(View view) { 
     ConnectivityManager connectivity = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo wifiInfo = connectivity.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
     if (wifiInfo.isConnected()) { 
      if (!connected) { 
       try { 
        socket = new Socket("192.168.137.1", 55555); 
        Toast msg = Toast.makeText(Main.this, 
          "Connected Successfully", Toast.LENGTH_LONG); 
        msg.show(); 
        dataOutputStream = new DataOutputStream(socket.getOutputStream()); 
        changeConnectionStatus(Boolean.TRUE); 
       } catch (IOException e) { 
        changeConnectionStatus(Boolean.FALSE); 
       } 
      } else { 
       try { 
        socket.close(); 
        Toast msg = Toast.makeText(Main.this, "Disconnected Successfully", Toast.LENGTH_LONG); 
        msg.show(); 
        changeConnectionStatus(Boolean.FALSE); 
       } catch (UnknownHostException e) { 
        changeConnectionStatus(Boolean.FALSE); 
       } catch (IOException e) { 
        changeConnectionStatus(Boolean.FALSE); 
       } 
      } 
     } else { 
      Toast msg = Toast.makeText(Main.this, "Wifi is not connected !", Toast.LENGTH_LONG); 
      msg.show(); 
     } 
    } 


    public void C1ButtonOnClickListener(View view) { 
     if (C1Button.isActivated()) { 
      Toast msg = Toast.makeText(Main.this, "Front cargo bay is opening !", Toast.LENGTH_LONG); 
      msg.show(); 
      transfer_REG(4, '1'); 
     } else { 
      Toast msg = Toast.makeText(Main.this, "Front cargo bay is closing !", Toast.LENGTH_LONG); 
      msg.show(); 
      transfer_REG(4, '0'); 
     } 
    } 

    public void C2ButtonOnClickListener(View view) { 
     if (C2Button.isActivated()) { 
      Toast msg = Toast.makeText(Main.this, "Back cargo bay is opening !", Toast.LENGTH_LONG); 
      msg.show(); 
      transfer_REG(5, '1'); 
     } else { 
      Toast msg = Toast.makeText(Main.this, "Back cargo bay is closing !", Toast.LENGTH_LONG); 
      msg.show(); 
      transfer_REG(5, '0'); 
     } 
    } 

    public void lightsButtonOnClickListener(View view) { 
     if (C2Button.isActivated()) { 
      Toast msg = Toast.makeText(Main.this, "Back cargo bay is opening !", Toast.LENGTH_LONG); 
      msg.show(); 
      transfer_REG(6, '1'); 
     } else { 
      Toast msg = Toast.makeText(Main.this, "Back cargo bay is closing !", Toast.LENGTH_LONG); 
      msg.show(); 
      transfer_REG(6, '0'); 
     } 
    } 

    private void transfer_REG(int i, char trans) { 
     setTransferReg(trans, i); 
     String transfer = new String(getTransferReg()); 
     if (connected) try { 
      dataOutputStream.writeChars(transfer); 
     } catch (IOException ignored) { 
     } 
    } 

    public void REListener(View view) { 
     if (RESB.getProgress() < 10) { 
      transfer_REG(2, Integer.toString(RESB.getProgress()).charAt(0)); 
      transfer_REG(3, '1'); 
     } else { 
      transfer_REG(2, Integer.toString(RESB.getProgress() - 10).charAt(0)); 
      transfer_REG(3, '0'); 
     } 
    } 

    public void LEListener(View view) { 
     if (LESB.getProgress() < 10) { 
      transfer_REG(1, Integer.toString(LESB.getProgress()).charAt(0)); 
      transfer_REG(2, '1'); 
      Toast msg = Toast.makeText(Main.this, "Left engine power is: -" + Integer.toString(LESB.getProgress()).charAt(0), Toast.LENGTH_LONG); 
      msg.show(); 
     } else { 
      transfer_REG(1, Integer.toString(LESB.getProgress() - 10).charAt(0)); 
      transfer_REG(2, '0'); 
      Toast msg = Toast.makeText(Main.this, "Left engine power is: " + Integer.toString(LESB.getProgress() - 10).charAt(0), Toast.LENGTH_LONG); 
      msg.show(); 
     } 
    } 
} 

下面是main.xml中:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
style="@android:style/Theme.Holo" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".Main"> 

<TextView 
    android:id="@+id/REtView" 
    style="@android:style/Theme.Holo" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/REseekBar" 
    android:layout_alignParentEnd="true" 
    android:text="@string/RE" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:textColor="#ffaec0ff" 
    android:textStyle="bold|italic" 
    android:theme="@style/Holo" 
    android:visibility="visible" /> 

<TextView 
    android:id="@+id/LEtView" 
    style="@android:style/Theme.Holo" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/LEseekBar" 
    android:layout_alignParentStart="true" 
    android:text="@string/LE" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:textColor="#ffaec0ff" 
    android:textStyle="bold|italic" 
    android:theme="@style/Holo" 
    android:visibility="visible" /> 

<SeekBar 
    android:id="@+id/LEseekBar" 
    style="@android:style/Theme.Holo" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentStart="true" 
    android:layout_toStartOf="@+id/LightsSwitch" 
    android:clickable="true" 
    android:max="20" 
    android:onClick="LEListener" 
    android:progress="10" 
    android:theme="@style/Holo" 
    android:visibility="visible" /> 

<SeekBar 
    android:id="@+id/REseekBar" 
    style="@android:style/Theme.Holo" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignEnd="@+id/REtView" 
    android:layout_alignParentBottom="true" 
    android:layout_toEndOf="@+id/LightsSwitch" 
    android:clickable="true" 
    android:max="20" 
    android:onClick="REListener" 
    android:progress="10" 
    android:theme="@style/Holo" 
    android:visibility="visible" /> 

<Button 
    android:id="@+id/connButton" 
    style="@android:style/Theme.Holo" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:clickable="true" 
    android:onClick="buttonConnectOnClickListener" 
    android:text="@string/conn" 
    android:textColor="#ffaec0ff" 
    android:textStyle="normal" 
    android:theme="@style/Holo" 
    android:typeface="normal" 
    android:visibility="visible" /> 

<Button 
    android:id="@+id/C1Button" 
    style="@android:style/Theme.Holo" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:clickable="true" 
    android:onClick="C1ButtonOnClickListener" 
    android:text="@string/C1" 
    android:textColor="#ffaec0ff" 
    android:textStyle="normal" 
    android:theme="@style/Holo" 
    android:visibility="visible" /> 

<Button 
    android:id="@+id/C2Button" 
    style="@android:style/Theme.Holo" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/C1Button" 
    android:layout_centerHorizontal="true" 
    android:clickable="true" 
    android:onClick="C2ButtonOnClickListener" 
    android:text="@string/C2" 
    android:textColor="#ffaec0ff" 
    android:textStyle="normal" 
    android:theme="@style/Holo" 
    android:visibility="visible" /> 

<Switch 
    android:id="@+id/LightsSwitch" 
    style="@android:style/Theme.Holo" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/C2Button" 
    android:layout_centerHorizontal="true" 
    android:checked="true" 
    android:clickable="true" 
    android:onClick="lightsButtonOnClickListener" 
    android:showText="false" 
    android:singleLine="true" 
    android:text="@string/light" 
    android:textColor="#ffaec0ff" 
    android:textStyle="normal" 
    android:theme="@style/Holo" 
    android:visibility="visible" /> 

這裏的manifest.xml:

<?xml version="1.0" encoding="utf-8"?> 

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.Holo"> 
    <activity 
     android:name=".Main" 
     android:configChanges="keyboard|keyboardHidden" 
     android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

+0

發佈堆棧跟蹤 – Shriram

+0

請使用'boolean'的原始版本。另外,確保遵循Java代碼風格約定。 – Emmanuel

+0

我沒有在您的代碼段中找到任何聽衆的註冊碼! – Shriram

回答

0

嘗試下面的代碼,

申報按鈕全局像兩個按鈕的其餘部分;

private Button connButton; 

把這個代碼,您聲明所有的IDS。

connButton = (Button) findViewById(R.id.connButton); 
0

你可以在你的android清單中看到你是否有這個權限?

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 

我試圖複製你的代碼並執行,這是我用頂部按鈕得到的問題。一旦這在Android清單中添加,那麼問題就解決了。

由於您沒有發佈AndroidManifest.xml,因此很難說您可能在那裏聲明瞭哪個權限。那麼你可以檢查一下是否已經存在,如果不存在,你可以添加並嘗試嗎?

我希望這會有所幫助。

+0

感謝您的幫助,但我從開始就有它,我也添加了清單 –

+0

您可以粘貼您的logcat錯誤嗎?你的代碼在一些定製後以某種方式與我一起工作。就像我刪除了style屬性讓它運行。如果粘貼會正確顯示錯誤的堆棧跟蹤。 –

相關問題