NullPointerException beim Aufruf einer (leeren) Binder-Methode in einer Button.onClick Methode

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • NullPointerException beim Aufruf einer (leeren) Binder-Methode in einer Button.onClick Methode

    so, wie der titel schon sagt bekomme ich eine NullPointerException, wenn ich eine Methode eines Binders aufrufe, hier der code dazu:

    Quellcode

    1. public void onClickVerbinden(final View view){
    2. final EditText ipAdressEingabe = (EditText) findViewById(R.id.ipAdressEingabe);
    3. String text = ipAdressEingabe.getText().toString();
    4. if (text.length() == 0){
    5. isNoIp();
    6. }
    7. else if (isIp(text)){
    8. final Intent networkServiceIntent = new Intent(this, NetworkService.class);
    9. bindService(networkServiceIntent, mNetworkServiceConnection, Context.BIND_AUTO_CREATE);
    10. //hier kommt die Exception
    11. mNetworkServiceBinder.ConnectToServer(text);
    12. //
    13. unbindService(mNetworkServiceConnection);
    14. final Intent controlPageIntent = new Intent(this, ControlPage.class);
    15. startActivity(controlPageIntent);
    16. }
    17. else isNoIp();
    18. }
    Alles anzeigen


    ich denke, dass es vielleicht hilfreich sein könnte, die Service, und die Binder Klasse ebenfalls hier zu zeigen:

    Quellcode

    1. public class NetworkService extends Service {
    2. public class NetworkServiceBinder extends Binder {
    3. public void ConnectToServer(String Ip) {}
    4. public void SendCommand(String command) {}
    5. }
    6. private final NetworkServiceBinder mNetworkServiceBinder = new NetworkServiceBinder();
    7. @Override
    8. public void onCreate(){
    9. super.onCreate();
    10. }
    11. @Override
    12. public IBinder onBind(Intent arg0) {
    13. // TODO Auto-generated method stub
    14. return mNetworkServiceBinder;
    15. }
    16. }
    Alles anzeigen


    hier ist das Layout, der Activity, in der die onClickVerbinden Methode definiert ist:

    XML-Quellcode

    1. <?xml version="1.0" encoding="utf-8"?>
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    3. android:orientation="vertical"
    4. android:layout_width="fill_parent"
    5. android:layout_height="fill_parent"
    6. >
    7. <TextView
    8. android:layout_width="fill_parent"
    9. android:layout_height="wrap_content"
    10. android:textSize="@dimen/standard_text"
    11. android:text="@string/einleitung"
    12. />
    13. <EditText
    14. android:id="@+id/ipAdressEingabe"
    15. android:layout_width="fill_parent"
    16. android:layout_height="wrap_content"
    17. />
    18. <Button
    19. android:layout_width="fill_parent"
    20. android:layout_height="wrap_content"
    21. android:text="@string/verbinden"
    22. android:onClick="onClickVerbinden"
    23. />
    24. <TextView
    25. android:layout_width="fill_parent"
    26. android:layout_height="wrap_content"
    27. android:textSize="@dimen/standard_text"
    28. android:text="@string/server_downloaden"
    29. />
    30. </LinearLayout>
    Alles anzeigen


    und hier das manifest:

    XML-Quellcode

    1. <?xml version="1.0" encoding="utf-8"?>
    2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    3. package="de.toolcreator.WindowsRemoteControl"
    4. android:versionCode="1"
    5. android:versionName="1.0">
    6. <uses-sdk android:minSdkVersion="8" />
    7. <uses-permission android:name="android.permission.INTERNET" />
    8. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    9. <application android:icon="@drawable/wrc_icon" android:label="@string/app_name">
    10. <activity android:name=".Startseite"
    11. android:label="@string/app_name">
    12. <intent-filter>
    13. <action android:name="android.intent.action.MAIN" />
    14. <category android:name="android.intent.category.LAUNCHER" />
    15. </intent-filter>
    16. </activity>
    17. <activity
    18. android:name=".ControlPage"
    19. android:label="@string/ControlPage">
    20. </activity>
    21. <service android:name=".NetworkService" />
    22. </application>
    23. </manifest>
    Alles anzeigen


    ich hoffe, dass ihr mir helfen könnt, ich habe nämlich keine Ahnung, wo ich bei der Problemlösung ansetzen soll...
  • so, ich habs nun doch allein geschafft :) eigentlich hab ich nicht groß was geändert, und es wundert micht, warum es plötzlich funktioniert, aber solange es geht ist mir das egal :D
    hier der funktionierende code, falls es irgendjemanden interessiert:

    Quellcode

    1. package de.toolcreator.WindowsRemoteControl;
    2. import android.app.Activity;
    3. import android.app.AlertDialog;
    4. import android.content.ComponentName;
    5. import android.content.Context;
    6. import android.content.Intent;
    7. import android.content.ServiceConnection;
    8. import android.os.Bundle;
    9. import android.os.IBinder;
    10. import android.view.View;
    11. import android.widget.EditText;
    12. import de.toolcreator.WindowsRemoteControl.ControlPage;
    13. public class Startseite extends Activity {
    14. private NetworkService.NetworkServiceBinder mNetworkServiceBinder;
    15. private ServiceConnection mNetworkServiceConnection =
    16. new ServiceConnection() {
    17. public void onServiceConnected(ComponentName className, IBinder binder){
    18. mNetworkServiceBinder = (NetworkService.NetworkServiceBinder) binder;
    19. }
    20. public void onServiceDisconnected(ComponentName className){}
    21. };
    22. /** Called when the activity is first created. */
    23. @Override
    24. public void onCreate(Bundle savedInstanceState) {
    25. super.onCreate(savedInstanceState);
    26. setContentView(R.layout.main);
    27. final Intent networkServiceIntent = new Intent(this, NetworkService.class);
    28. bindService(networkServiceIntent, mNetworkServiceConnection, Context.BIND_AUTO_CREATE);
    29. }
    30. @Override
    31. public void onResume(){
    32. super.onResume();
    33. final Intent networkServiceIntent = new Intent(this, NetworkService.class);
    34. bindService(networkServiceIntent, mNetworkServiceConnection, Context.BIND_AUTO_CREATE);
    35. }
    36. @Override
    37. public void onPause(){
    38. super.onPause();
    39. unbindService(mNetworkServiceConnection);
    40. }
    41. private boolean isIp(String str){
    42. int anzPunkte = 0;
    43. char[] charStr = str.toCharArray();
    44. for(int i = 0; i < str.length(); i++){
    45. if( charStr[i] == '.')
    46. anzPunkte++;
    47. }
    48. if(anzPunkte == 3){
    49. String[] strParts = str.split("\\.");
    50. for(int i = 0; i < 4; i++){
    51. try{
    52. if (!((Integer.parseInt(strParts[i]) < 255)))
    53. return false;
    54. }
    55. catch(Exception e){
    56. return false;
    57. }
    58. }
    59. return true;
    60. }
    61. else{
    62. return false;
    63. }
    64. }
    65. private void isNoIp(){
    66. AlertDialog noIpAlert = new AlertDialog.Builder(this).create();
    67. noIpAlert.setTitle("keine IP");
    68. noIpAlert.setMessage("Bitte tragen Sie eine IP-Adresse in das entsprechende Feld ein.");
    69. noIpAlert.show();
    70. }
    71. public void onClickVerbinden(final View view){
    72. final EditText ipAdressEingabe = (EditText) findViewById(R.id.ipAdressEingabe);
    73. String text = ipAdressEingabe.getText().toString();
    74. if (text.length() == 0){
    75. isNoIp();
    76. }
    77. else if (isIp(text)){
    78. mNetworkServiceBinder.ConnectToServer(text);
    79. final Intent controlPageIntent = new Intent(this, ControlPage.class);
    80. startActivity(controlPageIntent);
    81. }
    82. else isNoIp();
    83. }
    84. }
    Alles anzeigen