java-不是封闭的类

java-不是封闭的类,第1张

概述我的菜单选项按钮与获取HTTP数据的类不在同一类中.它给我“PhotoGalleryFragment不是封闭的类”错误newPhotoGalleryFragment.FetchItemsTask("top-rated").execute();PhotoGalleryActivity.java-在这里,我试图这样做,因此当按下“最高评级的电影”按钮时,它将传递FetchItems

我的菜单选项按钮与获取http数据的类不在同一类中.它给我“ PhotogalleryFragment不是封闭的类”错误

new PhotogalleryFragment.FetchItemsTask("top-rated").execute();

PhotogalleryActivity.java-在这里,我试图这样做,因此当按下“最高评级的电影”按钮时,它将传递FetchItemsTask的“最高评级”参数,以运行并更改API网址并从从“受欢迎”到“最高评分”

    @OverrIDe    public boolean onoptionsItemSelected(MenuItem item) {        // Handle action bar item clicks here. The action bar will        // automatically handle clicks on the Home/Up button, so long        // as you specify a parent activity in AndroIDManifest.xml.        int ID = item.getItemID();        //noinspection SimplifiableIfStatement        if (ID == R.ID.topRatedMovIEs) {            Toast.makeText(getApplicationContext(), "top Rated MovIE selected", Toast.LENGTH_LONG).show();            new PhotogalleryFragment.FetchItemsTask("top-rated").execute();            return true;        }        return super.onoptionsItemSelected(item);    }

PhotogalleryFragment.java-在这里,我试图获取数据.

public  class FetchItemsTask extends AsyncTask<VoID,VoID,List<MovIEItem>> {    private String mquery;    public FetchItemsTask(String query) {        mquery = query;    }    @OverrIDe    protected List<MovIEItem> doInBackground(VoID... params) {        return new MovIEFetchr().fetchItems(mquery);    }    @OverrIDe    protected voID onPostExecute(List<MovIEItem> items) {        mItems = items;        for (int i = 0; i < mItems.size(); i++) {        }        setupAdapter();    }}

我该如何解决这样的问题?谢谢.

解决方法:

要创建内部类,您需要从外部类的实例执行此 *** 作或将内部类设为静态:

因此,在PhotogalleryFragment中创建实例:

public class PhotogalleryFragment {           voID createTask(String query) {        new FetchItemsTask(query); //return it if you like, or just call execute here, doesn't matter    }}

要么:

public static class FetchItemsTask

但我认为您将需要做第一个选择,因为setupAdapter可能是PhotogalleryFragment上的一种方法.

通过在PhotogalleryFragment中创建,可为内部类提供对PhotogalleryFragment的引用,这是它能够在其上调用方法的方式.

可以将其视为一个无声的构造函数参数和字段,其行为类似于此代码,只是无需费力:

public class FetchItemsTask extends AsyncTask<VoID,VoID,List<MovIEItem>> {    private final PhotogalleryFragment outer;    public FetchItemsTask(PhotogalleryFragment outer, //a reference to the outer is passed in automatically        String query) {        this.outer = outer; //and stored in this FetchItemsTask instance    }    @OverrIDe    protected voID onPostExecute(List<MovIEItem> items) {        outer.setupAdapter(); //then used when outer methods are invoked    }}
总结

以上是内存溢出为你收集整理的java-不是封闭的类全部内容,希望文章能够帮你解决java-不是封闭的类所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1120603.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存