Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.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 - Fatal编程技术网

Android 自定义对话框中的gridview不工作。。。?

Android 自定义对话框中的gridview不工作。。。?,android,Android,我已尝试将栅格视图添加到自定义对话框中。显示时 对话框会崩溃。 但是当尝试在正常活动中显示网格视图时 正在工作(无对话框) 我从开发者android网站上取了一些例子 试图在自定义对话框中集成。 我使用了两个xmlmain.xml和category.xml 这是我的密码: package com.android.test; import android.app.Activity; import android.app.AlertDialog; import android.ap

我已尝试将栅格视图添加到自定义对话框中。显示时 对话框会崩溃。
但是当尝试在正常活动中显示网格视图时 正在工作(无对话框)
我从开发者android网站上取了一些例子 试图在自定义对话框中集成。
我使用了两个xmlmain.xml和category.xml 这是我的密码:

package com.android.test;   
import android.app.Activity;   
import android.app.AlertDialog;   
import android.app.Dialog;   
import android.content.Context;   
import android.os.Bundle;   
import android.view.LayoutInflater;   
import android.view.View;   
import android.view.ViewGroup;   
import android.view.View.OnClickListener;  
import android.widget.AdapterView;    
import android.widget.BaseAdapter;   
import android.widget.Button;   
import android.widget.GridView;   
import android.widget.ImageView;   
import android.widget.TextView;   
import android.widget.Toast;   
import android.widget.AdapterView.OnItemClickListener;   
public class test extends Activity {   
    /** Called when the activity is first created. */   
    public final static int CATEGORY_ID=0;   
    public void onCreate(Bundle savedInstanceState) {   
        super.onCreate(savedInstanceState);   
        setContentView(R.layout.main);   
        Button button = (Button)findViewById(R.id.categories);   
        button.setOnClickListener(new Button.OnClickListener(){   
            public void onClick(View v) {   
                                showDialog(CATEGORY_ID);   
            }   
        });   
    }   
    protected Dialog onCreateDialog(int id) {   
        Dialog dialog;   
        switch(id) {   
        case CATEGORY_ID:   
                AlertDialog.Builder builder;   
                AlertDialog alertDialog;   
                Context mContext = this;   
                LayoutInflater inflater = (LayoutInflater)   
mContext.getSystemService(LAYOUT_INFLATER_SERVICE);   
                View layout = inflater.inflate(R.layout.categorydialog,   
                                               (ViewGroup)   
findViewById(R.id.layout_root));   
                TextView text = (TextView) layout.findViewById(R.id.text);   
                text.setText("Hello, this is a custom dialog!");   
                ImageView image = (ImageView)   
layout.findViewById(R.id.image);   
                image.setImageResource(R.drawable.find);   
                GridView gridview = (GridView) findViewById(R.id.gridview);   
           gridview.setAdapter(new ImageAdapter(this));   
            gridview.setOnItemClickListener(new OnItemClickListener()   
{   
                public void onItemClick(AdapterView<?> parent, View v,   
int position, long id) {   
                    Toast.makeText(test.this, "" + position,   
Toast.LENGTH_SHORT).show();   
                }   
            });   
                builder = new AlertDialog.Builder(mContext);   
                builder.setView(layout);   
                dialog = builder.create();   
            break;   
        default:   
            dialog = null;   
        }   
        return dialog;   
    }   
    public class ImageAdapter extends BaseAdapter {   
        private Context mContext;   
        public ImageAdapter(Context c) {   
            mContext = c;   
        }   
        public int getCount() {   
            return mThumbIds.length;   
        }   
        public Object getItem(int position) {   
            return null;   
        }   
        public long getItemId(int position) {   
            return 0;   
        }   
        // create a new ImageView for each item referenced by the   
Adapter   
        public View getView(int position, View convertView, ViewGroup   
parent) {   
            ImageView imageView;   
            if (convertView == null) {  // if it's not recycled,   
initialize some attributes   
                imageView = new ImageView(mContext);   
                imageView.setLayoutParams(new   
GridView.LayoutParams(85, 85));   
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);   
                imageView.setPadding(8, 8, 8, 8);   
            } else {   
                imageView = (ImageView) convertView;   
            }   
            imageView.setImageResource(mThumbIds[position]);   
            return imageView;   
        }   
        // references to our images   
        private Integer[] mThumbIds = {   
                R.drawable.info, R.drawable.find,   
                R.drawable.info, R.drawable.find,   
                R.drawable.info, R.drawable.find,   
                R.drawable.info, R.drawable.find,   
                R.drawable.info, R.drawable.find,   
                R.drawable.info, R.drawable.find,   
                R.drawable.info, R.drawable.find,   
                R.drawable.info, R.drawable.find,   
                R.drawable.info, R.drawable.find,   
                R.drawable.info, R.drawable.find,   
                R.drawable.info, R.drawable.find   
        };   
    }   
} 
package com.android.test;
导入android.app.Activity;
导入android.app.AlertDialog;
导入android.app.Dialog;
导入android.content.Context;
导入android.os.Bundle;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.view.view.OnClickListener;
导入android.widget.AdapterView;
导入android.widget.BaseAdapter;
导入android.widget.Button;
导入android.widget.GridView;
导入android.widget.ImageView;
导入android.widget.TextView;
导入android.widget.Toast;
导入android.widget.AdapterView.OnItemClickListener;
公共类测试扩展活动{
/**首次创建活动时调用。*/
公共最终静态整数类别\u ID=0;
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
按钮按钮=(按钮)findViewById(R.id.categories);
button.setOnClickListener(新建button.OnClickListener(){
公共void onClick(视图v){
showDialog(类别标识);
}   
});   
}   
受保护的对话框onCreateDialog(int id){
对话;
开关(id){
案件类别编号:
AlertDialog.Builder;
警报对话框警报对话框;
Context mContext=这个;
LayoutInflater充气机=(LayoutInflater)
mContext.getSystemService(布局\充气机\服务);
视图布局=充气机。充气(R.layout.categorydialog,
(查看组)
findviewbyd(R.id.layout_root));
TextView text=(TextView)layout.findviewbyd(R.id.text);
setText(“您好,这是一个自定义对话框!”);
ImageView图像=(ImageView)
布局。findViewById(R.id.image);
setImageResource(R.drawable.find);
GridView GridView=(GridView)findViewById(R.id.GridView);
setAdapter(新的ImageAdapter(this));
setOnItemClickListener(新的OnItemClickListener()
{   
public void onItemClick(AdapterView父视图、视图v、,
int位置,长id){
Toast.makeText(test.this,“+”位置,
吐司。长度(短)。show();
}   
});   
builder=新建AlertDialog.builder(mContext);
builder.setView(布局);
dialog=builder.create();
打破
违约:
dialog=null;
}   
返回对话框;
}   
公共类ImageAdapter扩展BaseAdapter{
私有上下文;
公共图像适配器(上下文c){
mContext=c;
}   
public int getCount(){
返回mThumbIds.length;
}   
公共对象getItem(int位置){
返回null;
}   
公共长getItemId(int位置){
返回0;
}   
//为引用的每个项目创建新的ImageView
适配器
公共视图getView(int位置、视图转换视图、视图组
父项){
图像视图图像视图;
如果(convertView==null){//如果它没有被回收,
初始化一些属性
imageView=新的imageView(mContext);
imageView.setLayoutParams(新
布局参数(85,85));
imageView.setScaleType(imageView.ScaleType.CENTER\U裁剪);
设置填充(8,8,8,8);
}否则{
imageView=(imageView)convertView;
}   
setImageResource(mThumbIds[position]);
返回图像视图;
}   
//参考我们的图像
私有整数[]mThumbIds={
R.drawable.info,R.drawable.find,
R.drawable.info,R.drawable.find,
R.drawable.info,R.drawable.find,
R.drawable.info,R.drawable.find,
R.drawable.info,R.drawable.find,
R.drawable.info,R.drawable.find,
R.drawable.info,R.drawable.find,
R.drawable.info,R.drawable.find,
R.drawable.info,R.drawable.find,
R.drawable.info,R.drawable.find,
R.drawable.info,R.drawable.find
};   
}   
} 
main.xml

<?xml version="1.0" encoding="utf-8"?>   
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/   
android"   
              android:layout_width="fill_parent"   
              android:layout_height="fill_parent"   
              android:padding="3dip"   
              android:orientation="vertical">   
<Button android:id="@+id/categories"   
android:layout_width="150dip"   
android:layout_height="wrap_content"   
android:layout_gravity="right"   
android:text="Choose categories"   
/>   
</LinearLayout>   

categorydialog.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/   
android"   
              android:id="@+id/layout_root"   
              android:orientation="vertical"   
              android:layout_width="fill_parent"   
              android:layout_height="fill_parent"   
              android:padding="10dp"   
              >   
    <ImageView android:id="@+id/image"   
               android:layout_width="wrap_content"   
               android:layout_height="fill_parent"   
               android:layout_marginRight="10dp"   
               />   
    <TextView android:id="@+id/text"   
              android:layout_width="wrap_content"   
              android:layout_height="fill_parent"   
              android:textColor="#FFF"   
              />   
<GridView xmlns:android="http://schemas.android.com/apk/res/android"    
    android:id="@+id/gridview"   
    android:layout_width="fill_parent"   
    android:layout_height="fill_parent"   
    android:columnWidth="90dp"   
    android:numColumns="auto_fit"   
    android:verticalSpacing="10dp"   
    android:horizontalSpacing="10dp"   
    android:stretchMode="columnWidth"   
    android:gravity="center"   
/>   
</LinearLayout>   

有人能帮我一下吗。

更改这行:

GridView gridview = (GridView) findViewById(R.id.gridview);
对这样的事情:

GridView gridview = (GridView) layout.findViewById(R.id.gridview);
更改此行:

GridView gridview = (GridView) findViewById(R.id.gridview);
对这样的事情:

GridView gridview = (GridView) layout.findViewById(R.id.gridview);