我有两项活动...... 活动1:有一个edittext和两个按钮:button1& BUTTON2 活动2:拥有autocompletetextview和listview
我希望当我输入字符串到edittext并单击button1时,我创建一个HashMap(静态)来保存值(设置defaul =“hello word”)并在edittext中键入字符串... 单击button1时的事件:
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
hashMap.put(edittext.getText().toString(),"hello word");//I declared hashMap
}
});
在activity2中:
public class Notification_App extends Activity {
AutoCompleteTextView actv_notification;
ListView lv_notification;
Dictionary1 dictionary1;
ArrayList<String> str_value;
ArrayList<String> array_key;
@Override
public void onCreate(Bundle circle)
{
super.onCreate(circle);
setContentView(R.layout.notification);
actv_notification=(AutoCompleteTextView)findViewById(R.id.actv_notification);
lv_notification=(ListView)findViewById(R.id.listview_notification);
array_key=new ArrayList<String>(dictionary1.hashMap.keySet());
Iterator myVeryOwnIterator = dictionary1.hashMap.keySet().iterator();
while(myVeryOwnIterator.hasNext())
{
String key=(String)myVeryOwnIterator.next();
String value=(String)dictionary1.hashMap.get(key);
str_value.add(value);
}
ArrayAdapter<String> adapter=new ArrayAdapter<String>(Notification_App.this, android.R.layout.simple_dropdown_item_1line,array_key);
ArrayAdapter<String> adapter1=new ArrayAdapter<String>(Notification_App.this, android.R.layout.simple_list_item_1,array_key);
actv_notification.setAdapter(adapter);
lv_notification.setAdapter(adapter1);
lv_notification.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
Toast.makeText(getBaseContext(), str_value.get(position), Toast.LENGTH_LONG).show();
}
});
}
但是错误显示:行处的空指针: str_value.add(value); ...你能帮帮我..
答案 0 :(得分:2)
我想你忘了初始化str_value
变量。放在while
循环之前:
str_value = new ArrayList<String>();
它应该可以解决问题。
P.S。我没有检查代码的逻辑,只是指出为什么会得到NullPointerException
。
答案 1 :(得分:0)
您收到例外情况,因为str_value
是null
。
您需要创建实际对象:
str_value = new ArrayList<String>();
答案 2 :(得分:0)
尝试添加
str_value = new ArrayList<String>();
在第一次之前
str_value.add(value);