2016-04-10 19 views
-1

Bluetooth temellerini uygulamak için basit bir kod. Bu işlevler üzerinde , kapalı, eşleştirilmiş deivces ve serach aygıtlarını ekledim.java.lang.NullPointerException Etkinlik başlatılamadı

Ama en kısa sürede ben kaçak tıklayın olarak bu hataları

MainActivity.java

public class MainActivity extends Activity { 

    private static final int ENABLE_BT=1; 
    Button btnOn, btnOff, btnPaired, btnSearch; 
    ListView listView; 
    BluetoothAdapter bluetoothAdapter; 
    TextView textStatus; 
    Set<BluetoothDevice> bluetooDevice; 
    ArrayAdapter<String> madapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     btnOn= (Button) findViewById(R.id.buttonOn); 
     btnOff = (Button) findViewById(R.id.buttonOff); 
     btnPaired = (Button) findViewById(R.id.buttonPaired); 
     btnSearch = (Button) findViewById(R.id.buttonSearch); 
     textStatus = (TextView) findViewById(R.id.textUpdateStatus); 

     bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 
     if(bluetoothAdapter == null){ 
      btnOn.setEnabled(false); 
      btnOff.setEnabled(false); 
      btnPaired.setEnabled(false); 
      btnSearch.setEnabled(false); 
      textStatus.setText("Not Supported"); 
      Toast.makeText(getBaseContext(), "Your Device Does not Support Bluetooth", Toast.LENGTH_SHORT).show(); 
     } 
     else{ 

      btnOn.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View arg0) { 
        // TODO Auto-generated method stub 
        on(arg0); 
       } 


      }); 

      btnOff.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 

       } 
      }); 


      btnPaired.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        pairedDevice(v); 
       } 
      }); 


      btnSearch.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        search(v); 

       } 
      }); 
     } 

     madapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1); 
     listView.setAdapter(madapter); 


    } 

    public void on(View v){ 

     if(!bluetoothAdapter.isEnabled()){ 

      Intent turnOn = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
      startActivityForResult(turnOn, ENABLE_BT); 
      Toast.makeText(getApplicationContext(), "Bluetooth Turned On", Toast.LENGTH_SHORT).show(); 
     } 
     else{ 
      Toast.makeText(getApplicationContext(), "Bluetooth is aleady on", Toast.LENGTH_SHORT).show(); 
     } 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     // TODO Auto-generated method stub 
     super.onActivityResult(requestCode, resultCode, data); 

     if(requestCode == ENABLE_BT){ 
      if(bluetoothAdapter.isEnabled()){ 
       textStatus.setText("Enabled"); 
      } 
      else{ 
       textStatus.setText("Disabled"); 
      } 
     } 
    } 


    public void pairedDevice(View v){ 

     bluetooDevice = bluetoothAdapter.getBondedDevices(); 

     for(BluetoothDevice device : bluetooDevice){ 
      madapter.add(device.getName()+"\n"+device.getAddress()); 
      Toast.makeText(getApplicationContext(), "Paired Devices", Toast.LENGTH_SHORT).show(); 
     } 
    } 
    final BroadcastReceiver broadcastReceiver = new BroadcastReceiver(){ 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      // TODO Auto-generated method stub 
      String action = intent.getAction(); 

      //when discovery finds a device 
      if(BluetoothDevice.ACTION_FOUND.equals(action)){ 
       //Get bluetooth device object from intent 

       BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); 

       // Add name and MAC address to adapter 

       madapter.add(device.getName()+"\n"+device.getAddress()); 
       madapter.notifyDataSetChanged(); 

      } 
     } 

    }; 


    public void search(View v){ 

     if(bluetoothAdapter.isDiscovering()){ 
      bluetoothAdapter.cancelDiscovery(); 
     } 
     else{ 
      madapter.clear(); 
      bluetoothAdapter.startDiscovery(); 
      registerReceiver(broadcastReceiver, new IntentFilter(BluetoothDevice.ACTION_FOUND)); 
     } 
    } 

    public void off(View v){ 

     bluetoothAdapter.disable(); 
     textStatus.setText("Disabled"); 

     Toast.makeText(getApplicationContext(), "Bluetooth Disabled", Toast.LENGTH_SHORT).show(); 

    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

} 

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    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=".MainActivity" 
    android:background="#112f33" > 

    <Button 
     android:id="@+id/buttonOn" 
     style="?android:attr/buttonStyleSmall" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="44dp" 
     android:layout_marginTop="148dp" 
     android:text="@string/button_on" 
     android:textColor="#ffffff" /> 

    <Button 
     android:id="@+id/buttonOff" 
     style="?android:attr/buttonStyleSmall" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/buttonOn" 
     android:layout_alignBottom="@+id/buttonOn" 
     android:layout_alignParentRight="true" 
     android:layout_marginRight="36dp" 
     android:text="@string/button_off" 
     android:textColor="#ffffff"/> 

    <Button 
     android:id="@+id/buttonPaired" 
     style="?android:attr/buttonStyleSmall" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/buttonOn" 
     android:layout_alignRight="@+id/buttonOff" 
     android:layout_below="@+id/buttonOn" 
     android:layout_marginTop="21dp" 
     android:text="@string/button_paired" 
     android:textColor="#ffffff" /> 

    <Button 
     android:id="@+id/buttonSearch" 
     style="?android:attr/buttonStyleSmall" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/buttonPaired" 
     android:layout_alignRight="@+id/buttonPaired" 
     android:layout_below="@+id/buttonPaired" 
     android:layout_marginTop="28dp" 
     android:text="@string/button_search" 
     android:textColor="#ffffff" /> 

    <TextView 
     android:id="@+id/textStatus" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/buttonOff" 
     android:layout_alignLeft="@+id/buttonOn" 
     android:layout_marginBottom="60dp" 
     android:text="@string/text_status" 
     android:textColor="#ffffff" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <TextView 
     android:id="@+id/textUpdateStatus" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/textStatus" 
     android:layout_alignBottom="@+id/textStatus" 
     android:layout_alignLeft="@+id/buttonOff" 
     /> 
    <LinearLayout 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:orientation="vertical" 
     android:layout_below="@+id/buttonSearch"> 

     <ListView 
     android:id="@+id/listView" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content"></ListView> 
     </LinearLayout> 

</RelativeLayout> 

LogCat

04-10 13:15:22.704: E/AndroidRuntime(439): FATAL EXCEPTION: main 
04-10 13:15:22.704: E/AndroidRuntime(439): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.bluetoothbasics/com.example.bluetoothbasics.MainActivity}: java.lang.NullPointerException 
04-10 13:15:22.704: E/AndroidRuntime(439): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
04-10 13:15:22.704: E/AndroidRuntime(439): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
04-10 13:15:22.704: E/AndroidRuntime(439): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
04-10 13:15:22.704: E/AndroidRuntime(439): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
04-10 13:15:22.704: E/AndroidRuntime(439): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-10 13:15:22.704: E/AndroidRuntime(439): at android.os.Looper.loop(Looper.java:123) 
04-10 13:15:22.704: E/AndroidRuntime(439): at android.app.ActivityThread.main(ActivityThread.java:3683) 
04-10 13:15:22.704: E/AndroidRuntime(439): at java.lang.reflect.Method.invokeNative(Native Method) 
04-10 13:15:22.704: E/AndroidRuntime(439): at java.lang.reflect.Method.invoke(Method.java:507) 
04-10 13:15:22.704: E/AndroidRuntime(439): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
04-10 13:15:22.704: E/AndroidRuntime(439): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
04-10 13:15:22.704: E/AndroidRuntime(439): at dalvik.system.NativeStart.main(Native Method) 
04-10 13:15:22.704: E/AndroidRuntime(439): Caused by: java.lang.NullPointerException 
04-10 13:15:22.704: E/AndroidRuntime(439): at com.example.bluetoothbasics.MainActivity.onCreate(MainActivity.java:96) 
04-10 13:15:22.704: E/AndroidRuntime(439): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
04-10 13:15:22.704: E/AndroidRuntime(439): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
04-10 13:15:22.704: E/AndroidRuntime(439): ... 11 more 

Lütfen h gösterir

hataları bulmada elp. Teşekkür ederim.

+0

NPE neden oluyorsa bunu kullanmadan önce findViewById tarafından ListView listView; başlatmak için gereken. 'ListView' null gibi görünüyor, çünkü onu hiçbir zaman başlatmıyorsunuz. –

+0

@Mike M evet, haklısınız. teşekkür ederim. çok saçma bir hata. ve LogCat'a bakarak hata satırını nasıl bulacağımı söyleyebilir misin? lütfen –

+1

Genellikle 'Caused by:' ile başlayan yığın izinde son satırın hemen arkasındaki satırda olur. Sizin durumunuzda, com.example.bluetoothbasics .MainActivity.onCreate (MainActivity.java:96) 'nin sonundadır. –

cevap

0

satır numaraları eksik çünkü emin olamaz ama liste görünümü boş olduğu için bu hat üzerinde bir nullpointer sanırım:

listView.setAdapter (madapter);

=> Sorun buysa, bağdaştırıcıyı ayarlamadan önce listView'ı başlatın.

+0

evet hata sadece bu satırdaydı. Teşekkür ederim. –

1

Sen hat 96 üzerinde her ne ise

onCreate() { ... listView = (ListView) findViewById(R.id.listView); ... }

+0

teşekkür ederim. Şu anda çalışıyor –

+0

Sizin için iyi, lütfen bu cevabı doğru olarak kabul edin;) – iamtodor

İlgili konular