[color=#008000]//代码如下,ddms上显示NullPointerException ,问题出在哪?跪求答案!
/**
*
*/
package zhou.android.ListActivity;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import android.app.ListActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleAdapter;
/**
* @author Administrator
*
*/
public class ListActivityTest extends ListActivity {
private ListView myListView = null;
private static final String TAG = "LOG_V";
/* (non-Javadoc)
* @see android.app.Activity#onCreate(android.os.Bundle)
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState); myListView = (ListView)findViewById(R.id.myListView); ArrayList<Map<String,String>> list = new ArrayList<Map<String,String>>();
Map<String,String> map1 = new HashMap<String,String>();
Map<String,String> map2 = new HashMap<String,String>();
Map<String,String> map3 = new HashMap<String,String>();
map1.put("user_name", "zhangsan");
map1.put("user_ip", "192.168.0.1");
map2.put("user_name", "lisi");
map2.put("user_ip", "192.168.0.2");
map3.put("user_name", "wangwu");
map3.put("user_ip", "192.168.0.3");
list.add(map1);
list.add(map2);
list.add(map3); SimpleAdapter listAdapter = new SimpleAdapter(this,list,R.layout.user,new String[]{"user_name","user_ip"},
new int[] {R.id.user_name,R.id.user_ip});
:
myListView.setAdapter(listAdapter);
setContentView(myListView);
}@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
Log.v(TAG,"id----------" + id);
Log.v(TAG,"position-----------" + position);
}
}
[/color]
/**
*
*/
package zhou.android.ListActivity;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import android.app.ListActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleAdapter;
/**
* @author Administrator
*
*/
public class ListActivityTest extends ListActivity {
private ListView myListView = null;
private static final String TAG = "LOG_V";
/* (non-Javadoc)
* @see android.app.Activity#onCreate(android.os.Bundle)
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState); myListView = (ListView)findViewById(R.id.myListView); ArrayList<Map<String,String>> list = new ArrayList<Map<String,String>>();
Map<String,String> map1 = new HashMap<String,String>();
Map<String,String> map2 = new HashMap<String,String>();
Map<String,String> map3 = new HashMap<String,String>();
map1.put("user_name", "zhangsan");
map1.put("user_ip", "192.168.0.1");
map2.put("user_name", "lisi");
map2.put("user_ip", "192.168.0.2");
map3.put("user_name", "wangwu");
map3.put("user_ip", "192.168.0.3");
list.add(map1);
list.add(map2);
list.add(map3); SimpleAdapter listAdapter = new SimpleAdapter(this,list,R.layout.user,new String[]{"user_name","user_ip"},
new int[] {R.id.user_name,R.id.user_ip});
:
myListView.setAdapter(listAdapter);
setContentView(myListView);
}@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
Log.v(TAG,"id----------" + id);
Log.v(TAG,"position-----------" + position);
}
}
[/color]
解决方案 »
- android开发环境搭配好来了,运行模拟器程序显示不出来,也没报错
- Android能火几年?(当然,移动平台技术在不断更新)
- GPU死机,急求助
- 程序测试问题-android:sharedUserId
- Android Tab使用问题
- javax.mail在PC机上能运行,但在模拟器上出错
- ? - 2.1的Launcher和1.6有什么不一样?
- 有基于android的widget吗?
- 谷歌地图可以不可像百度地图那样通过一个链接上传经纬度来获取地图截图
- 弱弱的问下,这个论坛里都只是问问题才发贴吗?
- webview 无法输入,焦点乱跳的问题
- android代码中是怎样调用输入法的,具体在哪位置,谢谢!
myListView = (ListView)findViewById(R.id.myListView);前面试试。
Set the activity content from a layout resource.
void setContentView(View view, ViewGroup.LayoutParams params)
Set the activity content to an explicit view.
void setContentView(View view)
Set the activity content to an explicit view.
这句调用在setContentView(myListView)之前了。activity还没有inflate出来任何一个view,那么myListView必然是null值。我想myListView.setAdapter(listAdapter);这句已经开始报错了。建议一,改为: setContentView(R.layout.listview);
myListView = (ListView)findViewById(R.id.myListView);建议二, 改为:
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
myListView = (ListView)inflater.inflate(R.layout.listview, null);
setContentView(myListView);(上面都是未经验证的代码,示意一下)。
ANS:setContentView里肯定是去解析xml,然后将这些布局加载到view上。当调用完setContentView之后,就代表程序已经生成了这个布局,那再去findViewById,就可以访问到布局中的控件了。或者用另外一种方式,先 myListView = ListView(this); 然后setContentView(myListView),完全不用布局文件,是不是一般两者选一种?
ANS:你说的这种方式是用过代码来动态生成layout布局,是可以的,xml方式也好,代码方式也好,最终都要setContentView,不过xml方式比较直观,看你习惯哪种了(感觉android还是比较推崇xml方式的)