【发布时间】:2011-05-05 01:33:35
【问题描述】:
每次我尝试根据单击的按钮显示 toast 消息时都会收到以下错误。
这是我正在使用的代码
[按钮适配器]
public Context mContext;
String[] filenames = { "one", "two", "lul" };
// Gets the context so it can be used later
public ButtonAdapter(Context c) {
mContext = c;
}
// Total number of things contained within the adapter
public int getCount() {
return filenames.length;
}
// Require for structure, not really used in my code.
public Object getItem(int position) {
return null;
}
// Require for structure, not really used in my code. Can
// be used to get the id of an item in the adapter for
// manual control.
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
Button btn;
if (convertView == null) {
// if it's not recycled, initialise some attributes
btn = new Button(mContext);
btn.setLayoutParams(new GridView.LayoutParams(100, 55));
btn.setPadding(8, 8, 8, 8);
}
else {
btn = (Button) convertView;
}
btn.setText(filenames[position]);
// filenames is an array of strings
btn.setTextColor(Color.WHITE);
btn.setBackgroundResource(R.drawable.button);
btn.setId(position);
btn.setOnClickListener(new MyOnClickListener(position));
return btn;
}
}
这里是 onClickListener
class MyOnClickListener extends gridview implements OnClickListener {
private final int position;
public MyOnClickListener(int position) {
this.position = position;
}
@Override
public void onClick(View v) {
function3(this.position);
}
最后,我的主要活动
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setUpViews();
}
public void function3(int buttonposition) {
if (buttonposition == 1) {
Toast.makeText(this, "test", Toast.LENGTH_SHORT);
} else {
Toast.makeText(this, "test", Toast.LENGTH_LONG);
}
}
private void setUpViews() {
GridView gridview = (GridView) findViewById(R.id.gridView2);
gridview.setAdapter(new ButtonAdapter(this));
}
}
这会导致以下错误
05-05 00:41:12.949: ERROR/AndroidRuntime(1570): java.lang.NullPointerException
05-05 00:41:12.949: ERROR/AndroidRuntime(1570): at android.content.ContextWrapper.getResources(ContextWrapper.java:80)
05-05 00:41:12.949: ERROR/AndroidRuntime(1570): at android.widget.Toast.<init>(Toast.java:89)
05-05 00:41:12.949: ERROR/AndroidRuntime(1570): at android.widget.Toast.makeText(Toast.java:231)
05-05 00:41:12.949: ERROR/AndroidRuntime(1570): at com.gridview.msg.function3(msg.java:113)
05-05 00:41:12.949: ERROR/AndroidRuntime(1570): at com.gridview.msg.MyOnClickListener.onClick(MyOnClickListener.java:21)
这已经困扰我很久了。我确定它与if (buttonposition == 1)... 声明有关,我只是没有以正确的方式或其他方式调用它。有谁知道怎么回事?
【问题讨论】:
-
我刚刚获得了风滚草徽章。 “问了一个没有投票、没有答案、没有 cmets 和一周低视图的问题。”撞这个可以吗?