Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:Gridview强制关闭_Android_Gridview - Fatal编程技术网

Android:Gridview强制关闭

Android:Gridview强制关闭,android,gridview,Android,Gridview,我正在学习一个关于如何使用一个。我一直无法让代码工作,但每当我编译并运行应用程序时,force就会关闭。Logcat称其“无法实例化活动ComponentInfo”相当于一系列其他错误。我不擅长调试,所以我陷入了僵局。这是我的代码: public class GridViewDemo extends Activity { public String[] filenames = { "File 1", "File 2",

我正在学习一个关于如何使用一个。我一直无法让代码工作,但每当我编译并运行应用程序时,force就会关闭。Logcat称其“无法实例化活动ComponentInfo”相当于一系列其他错误。我不擅长调试,所以我陷入了僵局。这是我的代码:

public class GridViewDemo extends Activity {
    public String[] filenames = { 
            "File 1", 
            "File 2",
            "Roflcopters"
            };


    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        GridView gridview = (GridView) findViewById(R.id.gridview);
        gridview.setAdapter(new ButtonAdapter(this));

    }


    //Classes
    public class ButtonAdapter extends BaseAdapter {
         private Context mContext;

         // 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;
         }

         @SuppressWarnings("null")
        public View getView(int position, 
                                   View convertView, ViewGroup parent) {
          Button btn = null;
          btn.setOnClickListener(new MyOnClickListener(position)); 
          if (convertView == null) {  
           // if it's not recycled, initialize 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.icon);
          btn.setId(position);

          return btn;
         }
        }





    class MyOnClickListener implements OnClickListener {

        private final int position;

        public MyOnClickListener(int position) {
            this.position = position;
        }

        public void onClick(View v) {
            // Preform a function based on the position
            // someFunction(this.position)
            Toast.makeText(getApplicationContext(), this.position, Toast.LENGTH_SHORT).show();
        }
    }
XML:


清单xml:

<?xml version="1.0" encoding="utf-8"?>


知道为什么会崩溃吗? 这是logcat输出:

首先,我建议学习如何调试[参见和示例]。它很快就会变得方便

其次,下次请从logcat添加日志,其中显示导致“强制关闭”的异常的详细信息

关于您的问题,您正在尝试对空对象调用方法:

Button btn = null;
btn.setOnClickListener(new MyOnClickListener(position)); 
这会导致空指针异常。只有在将对象分配给
btn
之后,才应添加侦听器,该对象位于
if-else
块之后

还有一件事-您抑制了
null
警告(
@SuppressWarnings(“null”)
),以避免警告,而不是处理它,这样您就得到了null指针异常。除非你百分之百确定,否则不要忽略警告

编辑:

看看你的清单,这是个小错误。应该是

<activity android:name=".GridViewActivity"

谢谢你的调试教程,我一直在寻找这个东西,它还附带了一个视频,哈哈。至于我修复了您提到的代码,我清楚地看到了为什么我会在该段中出错。修复后,程序仍然崩溃,因此我必须有一些更糟糕的编码。因此,请添加一个logcat日志,以便我们可以查看异常详细信息。由于某种原因,Dalvik似乎找不到您的类(ClassNotFoudException)您可以发布清单XML内容吗?发布在XML清单和布局XML上面仅供参考。谢谢!我最终只是做了一个新的项目,并粘贴了代码,效果很好!
Button btn = null;
btn.setOnClickListener(new MyOnClickListener(position)); 
<activity android:name=".GridViewActivity"
<activity android:name=".GridviewActivity"