2015-03-07 4 views
0

Я действительно новичок в android, и я много ищу, но до сих пор не удалось решить эту проблему. Поскольку заголовок говорит, что я пытаюсь передать переменную из класса baseadapter к другому действию, я получаю ошибку с ошибкой null, когда пытаюсь получить строковое значение. Вот мой код:Android: не может передавать переменную из BaseAdapter в Activity

final String macaddress = holder.addressTv.getText().toString(); 

    holder.sendBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(context, SendString.class); 

      intent.putExtra("macaddress", macaddress); 
      context.startActivity(intent); 
     } 
    }); 

И я получаю его в SendString деятельности, как это:

String address = getIntent().getStringExtra("macaddress"); 

Logcat:

03-07 14:12:28.654 11047-11047/com.example.alexis.dikomoytest W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x2c040ce0) 
03-07 14:12:28.654 11047-11047/com.example.alexis.dikomoytest E/AndroidRuntime﹕ FATAL EXCEPTION: main 
Process: com.example.alexis.dikomoytest, PID: 11047 
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.alexis.dikomoytest/com.example.alexis.dikomoytest.SendString}: java.lang.NullPointerException 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2143) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2283) 
     at android.app.ActivityThread.access$800(ActivityThread.java:144) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5158) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566) 
     at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NullPointerException 
     at com.example.alexis.dikomoytest.SendString.<init>(SendString.java:41) 
     at java.lang.Class.newInstanceImpl(Native Method) 
     at java.lang.Class.newInstance(Class.java:1208) 
     at android.app.Instrumentation.newActivity(Instrumentation.java:1061) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2134) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2283) at android.app.ActivityThread.access$800(ActivityThread.java:144) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5158) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566) at dalvik.system.NativeStart.main(Native Method) 

SendString.java

public class SendString extends ActionBarActivity { 

TextView out; 
private static final int REQUEST_ENABLE_BT = 1; 
private BluetoothAdapter btAdapter = null; 
private BluetoothSocket btSocket = null; 
private OutputStream outStream = null; 

private static final UUID MY_UUID = 
     UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); 


//private static String address = "0C:13:09:01:06:15"; 


String address = getIntent().getStringExtra("macaddress"); 



/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_send_string); 

    out = (TextView) findViewById(R.id.out); 

    out.append("\n...In onCreate()..."); 

    btAdapter = BluetoothAdapter.getDefaultAdapter(); 
    CheckBTState(); 
} 

@Override 
public void onStart() { 
    super.onStart(); 
    out.append("\n...In onStart()..."); 
} 

@Override 
public void onResume() { 
    super.onResume(); 

    out.append("\n...In onResume...\n...Attempting client connect..."); 


    BluetoothDevice device = btAdapter.getRemoteDevice(address); 


    try { 
     btSocket = device.createRfcommSocketToServiceRecord(MY_UUID); 
    } catch (IOException e) { 
     AlertBox("Fatal Error", "In onResume() and socket create failed: " + e.getMessage() + "."); 
    } 


    btAdapter.cancelDiscovery(); 


    try { 
     btSocket.connect(); 
     out.append("\n...Connection established and data link opened..."); 
    } catch (IOException e) { 
     try { 
      btSocket.close(); 
     } catch (IOException e2) { 
      AlertBox("Fatal Error", "In onResume() and unable to close socket during connection failure" + e2.getMessage() + "."); 
     } 
    } 


    out.append("\n...Sending message to server..."); 

    try { 
     outStream = btSocket.getOutputStream(); 
    } catch (IOException e) { 
     AlertBox("Fatal Error", "In onResume() and output stream creation failed:" + e.getMessage() + "."); 
    } 

    String message = "Test.\n"; 
    byte[] msgBuffer = message.getBytes(); 
    try { 
     outStream.write(msgBuffer); 
    } catch (IOException e) { 
     String msg = "In onResume() and an exception occurred during write: " + e.getMessage(); 
     if (address.equals("00:00:00:00:00:00") || address.equals("NULL")) 
      msg = msg + ".\n\nUpdate your server address from 00:00:00:00:00:00 to the correct address on line 37 in the java code"; 
     msg = msg + ".\n\nCheck that the SPP UUID: " + MY_UUID.toString() + " exists on server.\n\n"; 

     AlertBox("Fatal Error", msg); 
    } 
} 

@Override 
public void onPause() { 
    super.onPause(); 

    out.append("\n...In onPause()..."); 

    if (outStream != null) { 
     try { 
      outStream.flush(); 
     } catch (IOException e) { 
      AlertBox("Fatal Error", "In onPause() and failed to flush output stream: " + e.getMessage() + "."); 
     } 
    } 

    try  { 
     btSocket.close(); 
    } catch (IOException e2) { 
     AlertBox("Fatal Error", "In onPause() and failed to close socket." + e2.getMessage() + "."); 
    } 
} 

@Override 
public void onStop() { 
    super.onStop(); 
    out.append("\n...In onStop()..."); 
} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    out.append("\n...In onDestroy()..."); 
} 

private void CheckBTState() { 

    if(btAdapter==null) { 
     AlertBox("Fatal Error", "Bluetooth Not supported. Aborting."); 
    } else { 
     if (btAdapter.isEnabled()) { 
      out.append("\n...Bluetooth is enabled..."); 
     } else { 
      //Prompt user to turn on Bluetooth 
      Intent enableBtIntent = new Intent(btAdapter.ACTION_REQUEST_ENABLE); 
      startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); 
     } 
    } 
} 

public void AlertBox(String title, String message){ 
    new AlertDialog.Builder(this) 
      .setTitle(title) 
      .setMessage(message + " Press OK to exit.") 
      .setPositiveButton("OK", new OnClickListener() { 
       public void onClick(DialogInterface arg0, int arg1) { 
        finish(); 
       } 
      }).show(); 
} 

}

+0

разместит ваш LogCat – localhost

+0

я могу загрузить его в другом месте вызвать есть проблема сказать, что я не правильно отформатирован код, хотя из окна предварительного просмотра, кажется, хорошо. – Alex

+0

другие люди загружают его здесь без проблем – localhost

ответ

0

getIntent() is null from onCreate callback и некоторые другие. Переместить назначение Строки в OnCreate:

address = getIntent().getStringExtra("macaddress"); 
1

я думаю:

String address = getIntent().getStringExtra("macaddress"); 

возвращение нуль. , потому что у вас есть ошибка NullPointerException.

Смежные вопросы