Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 简单程序中的setListAdapter错误_Java_Android - Fatal编程技术网

Java 简单程序中的setListAdapter错误

Java 简单程序中的setListAdapter错误,java,android,Java,Android,我是android编程新手,我还有一些事情不明白。例如,我有一个程序,当你点击一个按钮时,它会试图找到附近的任何设备。问题是我不知道如何解决我在乞讨中犯下的一个错误。这就是我所拥有的 这是主要活动: import java.util.ArrayList; import java.util.List; import java.util.Set; import android.app.Activity; import android.bluetooth.BluetoothAdapter; impor

我是android编程新手,我还有一些事情不明白。例如,我有一个程序,当你点击一个按钮时,它会试图找到附近的任何设备。问题是我不知道如何解决我在乞讨中犯下的一个错误。这就是我所拥有的

这是主要活动:

import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.ArrayAdapter;

public class MainActivity extends Activity {

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

@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;
}

public void buscar(View view){
    BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();
    List<String> s = new ArrayList<String>();
    for(BluetoothDevice bt : pairedDevices)
       s.add(bt.getName());     
    setListAdapter(new ArrayAdapter<String>(this, R.id.list, s));
}
}
import java.util.ArrayList;
导入java.util.List;
导入java.util.Set;
导入android.app.Activity;
导入android.bluetooth.BluetoothAdapter;
导入android.bluetooth.bluetooth设备;
导入android.os.Bundle;
导入android.view.Menu;
导入android.view.view;
导入android.widget.ArrayAdapter;
公共类MainActivity扩展了活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.main,menu);
返回true;
}
公共客车(视图){
BluetoothAdapter mBluetoothAdapter=BluetoothAdapter.getDefaultAdapter();
设置pairedDevices=mBluetoothAdapter.getBondedDevices();
列表s=新的ArrayList();
用于(蓝牙设备bt:pairedDevices)
s、 添加(bt.getName());
setListAdapter(新的ArrayAdapter(this,R.id.list,s));
}
}
这是xml文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/RelativeLayout1"
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" >

<Button
    android:id="@+id/botonvinculo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:clickable="true"
    android:onClick="buscar"
    android:text="Buscar dispositivos" />

<ListView
    android:id="@+id/list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/botonvinculo"
    android:layout_below="@+id/botonvinculo" >
</ListView>

</RelativeLayout>

问题是,除非我的主活动扩展自ListActivity,否则我无法调用setListAdapter,即使尝试这样做,它也会返回一个错误,说“您必须拥有一个属性为“android.R.id.list”的ListView”


非常感谢您的帮助。

setListAdapter
仅当您的活动从
ListActivity
扩展时才起作用。请在您的案例中使用此选项

listview.setAdapter();
如果要使用setListAdapter(),请仅更改以下内容

public class MainActivity extends Activity


android:id=“@android:id/list”用于xml中的列表视图

如果使用
ListActivity
,则应在xml中使用
android:id=“@android:id/list”
,而不是
android:id=“@+id/list”
或者,您可以在XML格式中获得
ListView
的对象

ListView列表=(ListView)findViewById(R.id.list);


然后使用
list.setAdapter

您的类扩展了
活动
setListAdapter
ListActivity

ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
 lv = (ListView)findViewById(R.id.list);
}  
然后

public void客车(视图){
BluetoothAdapter mBluetoothAdapter=BluetoothAdapter.getDefaultAdapter();
设置pairedDevices=mBluetoothAdapter.getBondedDevices();
列表s=新的ArrayList();
用于(蓝牙设备bt:pairedDevices)
s、 添加(bt.getName());
ArrayAdapter=新的ArrayAdapter(这是android.R.layout.simple.list_item_1,s);
低压设置适配器(适配器);
}
ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
 lv = (ListView)findViewById(R.id.list);
}  
public void buscar(View view){
    BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();
    List<String> s = new ArrayList<String>();
    for(BluetoothDevice bt : pairedDevices)
       s.add(bt.getName());     
     ArrayAdapter<String> adapter =  new ArrayAdapter<String>(this,android.R.layout.simple.list_item_1,s);
     lv.setAdapter(adapter);
}