どのボタンがクリックされたかに依存するトーストメッセージを表示しようとするたびに、次のエラーが発生します。
これが私が使用しているコードです
【ボタンアダプター】
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)...
声明に何か問題があると確信しており、正しい方法でそれを呼んでいないだけです。誰が何が悪いのか知っていますか?