Java 如何从对话框(Android)访问GridView实例?
我的Android应用程序有问题。这可能是一个简单的Java问题,但我对Java的了解还不足以让我知道谷歌应该做什么。下面是一个简单的版本,说明了我的问题。我希望能够从对话框中访问Java 如何从对话框(Android)访问GridView实例?,java,android,gridview,dialog,Java,Android,Gridview,Dialog,我的Android应用程序有问题。这可能是一个简单的Java问题,但我对Java的了解还不足以让我知道谷歌应该做什么。下面是一个简单的版本,说明了我的问题。我希望能够从对话框中访问gridview。很明显我这里的东西不对。我尝试将声明移到onCreate方法之外,但是我的应用程序在一开始就崩溃了(没有错误消息)。我还尝试将其作为参数添加到ShowDialog,但我猜是因为我重写了不起作用的函数。正如你可能知道的,我不知道我在做什么。想法 public class HelloGridView ex
gridview
。很明显我这里的东西不对。我尝试将声明移到onCreate方法之外,但是我的应用程序在一开始就崩溃了(没有错误消息)。我还尝试将其作为参数添加到ShowDialog
,但我猜是因为我重写了不起作用的函数。正如你可能知道的,我不知道我在做什么。想法
public class HelloGridView extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this));
((ImageAdapter) gridview.getAdapter()).initializemThumbIds();
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
showDialog(0);
}
});
}
protected Dialog onCreateDialog(int id) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
gridview.setAdapter(new ImageAdapter(this)); // gridview cannot be resolved
dialog.cancel();
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
HelloGridView.this.finish();
}
});
AlertDialog diag = builder.create();
return diag;
}
}
公共类HelloGridView扩展活动{
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final GridView GridView=(GridView)findviewbyd(R.id.GridView);
setAdapter(新的ImageAdapter(this));
((ImageAdapter)gridview.getAdapter()).initializemThumbIds();
setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父视图、视图v、整型位置、长id){
显示对话框(0);
}
});
}
受保护的对话框onCreateDialog(int id){
AlertDialog.Builder=新建AlertDialog.Builder(此);
builder.setMessage(“?”)
.setCancelable(错误)
.setPositiveButton(“是”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
gridview.setAdapter(新的ImageAdapter(this));//无法解析gridview
dialog.cancel();
}
})
.setNegativeButton(“否”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
HelloGridView.this.finish();
}
});
AlertDialog diag=builder.create();
返回诊断;
}
}
我认为您没有正确的作用域,因此下面我将gridView作为一个成员变量。但我认为您真正想要做的是将ImageAdapter设置为成员变量,并仅在对话框中单击“是”更新ImageAdapter
公共类HelloGridView扩展活动{
私有GridView GridView;
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
gridview=(gridview)findViewById(R.id.gridview);
setAdapter(新的ImageAdapter(this));
((ImageAdapter)gridview.getAdapter()).initializemThumbIds();
setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父视图、视图v、整型位置、长id){
显示对话框(0);
}
});
}
受保护的对话框onCreateDialog(int id){
AlertDialog.Builder=新建AlertDialog.Builder(此);
builder.setMessage(“?”)
.setCancelable(错误)
.setPositiveButton(“是”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
gridview.setAdapter(新的ImageAdapter(this));//无法解析gridview
dialog.cancel();
}
})
.setNegativeButton(“否”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
HelloGridView.this.finish();
}
});
AlertDialog diag=builder.create();
返回诊断;
}
}
谢谢!你说得对,我确实想让ImageAdapter成为一个成员变量。
public class HelloGridView extends Activity {
private GridView gridview;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this));
((ImageAdapter) gridview.getAdapter()).initializemThumbIds();
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
showDialog(0);
}
});
}
protected Dialog onCreateDialog(int id) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
gridview.setAdapter(new ImageAdapter(this)); // gridview cannot be resolved
dialog.cancel();
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
HelloGridView.this.finish();
}
});
AlertDialog diag = builder.create();
return diag;
}
}