Я получаю следующую ошибку каждый раз, когда пытаюсь отобразить всплывающее сообщение в зависимости от того, какая кнопка была нажата.
Вот код, который я использую
[ButtonAdapter]
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)...
, и я просто не правильно его называю или что-то в этом роде. Кто-нибудь знает, что не так?