【问题标题】:viewPager / AsyncTask Implementation: mPager cannot be resolved and GetXMLTask cannot be resolved to a type - Java / AndroidviewPager / AsyncTask 实现:mPager 无法解析,GetXMLTask 无法解析为类型 - Java / Android
【发布时间】:2014-02-17 15:45:04
【问题描述】:

我在 Eclipse 中遇到两个错误:

GetXMLTask cannot be resolved to a type     line 119:

这是

GetXMLTask task = new GetXMLTask(this);

还有

mPager cannot be resolved       line 151:   onTabChanged(mPager.getAdapter(), mCurrentTabPosition, position);

我相信我已经正确地声明并调用了 GetXMLTask 和 mPager,所以我不确定究竟是什么原因造成的。

非常感谢任何建议。

Java 源代码:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.parser_main);

        final ActionBar actionBar = getActionBar();
        final ViewPager mPager = (ViewPager) findViewById(R.id.view_pager);
        adapter.notifyDataSetChanged();
        mPager.setAdapter(adapter);
        actionBar.setCustomView(R.layout.actionbar_custom_view_home);
        actionBar.setDisplayShowTitleEnabled(false);
        actionBar.setDisplayShowCustomEnabled(true);

        drawerListViewItems = getResources().getStringArray(R.array.items);
        drawerListView = (ListView) findViewById(R.id.left_drawer);
        drawerListView.setAdapter(new ArrayAdapter<String>(this,
                R.layout.drawer_listview_item, drawerListViewItems));
        mPager.setOnPageChangeListener(mPageChangeListener);
        drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        actionBarDrawerToggle = new ActionBarDrawerToggle(this, /* host Activity */
                drawerLayout, /* DrawerLayout object */
                R.drawable.ic_drawer, /* nav drawer icon to replace 'Up' caret */
                R.string.drawer_open, /* "open drawer" description */
                R.string.drawer_close /* "close drawer" description */
                );
        drawerLayout.setDrawerListener(actionBarDrawerToggle);

        getActionBar().setDisplayHomeAsUpEnabled(true);
        _initMenu();

        drawerLayout.setDrawerShadow(R.drawable.drawer_shadow,
                GravityCompat.START);

        findViewsById();

        listView.setOnItemClickListener(this);

        GetXMLTask task = new GetXMLTask(this);
        task.execute(new String[] { URL });
    }

    private void findViewsById() {

        listView = (ListView) findViewById(R.id.videosListView);
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
            long id) {
    }

    @Override
    public void onClick(View view) {

        class DrawerItemClickListener implements ListView.OnItemClickListener {
            @Override
            public void onItemClick(AdapterView parent, View view,
                    int position, long id) {
                Toast.makeText(getApplicationContext(), "", Toast.LENGTH_SHORT)
                .show();
                drawerLayout.closeDrawer(drawerListView);

            }
        }

        mPageChangeListener = new ViewPager.SimpleOnPageChangeListener() {

            @Override
            public void onPageSelected(int position) {
                onTabChanged(mPager.getAdapter(), mCurrentTabPosition, position);
                position = mCurrentTabPosition;
                int oldPos = mPager.getCurrentItem();

                Log.d("PK", "Page selected");

                if (position > oldPos) {

                    System.out.print(position);
                    // Moving to the right
                    String playlist = "TheMozARTGROUP‎";

                    View vg = findViewById(R.layout.home);
                    vg.invalidate();

                }
                if (position > oldPos) {

                    System.out.print(position);
                    // Moving to the right
                    String playlist = "TheMozARTGROUP‎";

                    View vg = findViewById(R.layout.home);
                    vg.invalidate();

                } else if (position < oldPos) {
                    // Moving to the Left
                    System.out.print(position);
                    String playlist = "TheMozARTGROUP‎";

                    View vg = findViewById(R.layout.home);
                    vg.invalidate();

                }
                mPager.setOnPageChangeListener(mPageChangeListener);
            }

            private void onTabChanged(PagerAdapter adapter,
                    int mCurrentTabPosition, int position) {

                Log.d("PK", "Tab changed");
                // TODO Auto-generated method stub

            }
        };
    }

    private void _initMenu() {
        // TODO Auto-generated method stub
        class DrawerItemClickListener implements ListView.OnItemClickListener {

            @Override
            public void onItemClick(AdapterView parent, View view,
                    int position, long id) {

                Log.d("pk", "onItemClick");
                // Highlight the selected item, update the title, and close the
                // drawer
                // update selected item and title, then close the drawer
                drawerListView.setItemChecked(position, true);
                setTitle("......");

                Toast.makeText(getApplicationContext(), "Item Clicked",
                        Toast.LENGTH_SHORT).show();
                // Toast.makeText(Home.this, text, Toast.LENGTH_LONG).show();
                drawerLayout.closeDrawer(drawerListView);

            }

        }
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        actionBarDrawerToggle.onConfigurationChanged(newConfig);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        if (actionBarDrawerToggle.onOptionsItemSelected(item)) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    private class ImagePagerAdapter extends PagerAdapter implements
    ViewPager.OnPageChangeListener {
        public ImagePagerAdapter(Activity act, int[] mImages,
                String[] stringArra) {
            imageArray = mImages;
            activity = act;
            stringArray = stringArra;
        }

        // this is your constructor
        public ImagePagerAdapter() {
            super();

        }

        private int[] mImages = new int[] { R.drawable.selstation_up_btn,
                R.drawable.classical_up_btn, R.drawable.country_up_btn,
                R.drawable.dance_up_btn, R.drawable.hiphop_up_btn,
                R.drawable.island_up_btn, R.drawable.latin_up_btn,
                R.drawable.pop_up_btn, R.drawable.samba_up_btn };

        private String[] stringArray = new String[] { "vevo",
                "TheMozARTGROUP‎", "TimMcGrawVEVO‎", "TiestoVEVO‎",
        "EminemVEVO‎" };

        @Override
        public int getCount() {
            return mImages.length;
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == ((ImageView) object);
        }

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            Context context = SAXParserAsyncTaskActivity.this;
            ImageView imageView = new ImageView(context);
            imageView.setScaleType(ScaleType.FIT_XY);
            imageView.setImageResource(mImages[position]);
            ((ViewPager) container).addView(imageView, 0);
            return imageView;
        }

        public void destroyItem(ViewGroup container, int position, Object object) {
            ((ViewPager) container).removeView((ImageView) object);
        }

        @Override
        public void onPageScrollStateChanged(int pos) {

            Log.d("PK", "onPageScrollStateChanged");

            // Toast.makeText(getApplicationContext(),
            // "onPageScrollStateChanged", Toast.LENGTH_SHORT).show();
            // String playlist = "TheMozARTGROUP‎";
            // new GetYouTubeUserVideosTask(responseHandler,
            // playlist).execute();
            // adapter.notifyDataSetChanged();
            //
            ;

        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
            Log.d("PK", "onPageScrolled");
            // TODO Auto-generated method stub
            // Toast.makeText(getApplicationContext(), "onPageScrolled",
            // Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onPageSelected(int arg0) {
            // TODO Auto-generated method stub
            Log.d("pk", "onPageSelected");
        }

        // private inner class extending AsyncTask
        class GetXMLTask extends AsyncTask<String, Void, List<Cmd>> {
            private Activity context;

            public GetXMLTask(Activity context) {
                this.context = context;
            }

            protected void onPostExecute(List<Cmd> videos) {
                if (videos != null) {
                    listViewAdapter = new CustomListViewAdapter(context, videos);
                    listView.setAdapter(listViewAdapter);
                } else {

                    Toast.makeText(getApplicationContext(),
                            "XML Video Feed is Null!", Toast.LENGTH_LONG)
                            .show();
                }
            }

            private String getXmlFromUrl(String urlString) {
                StringBuffer output = new StringBuffer("");
                try {
                    InputStream stream = null;
                    URL url = new URL(urlString);
                    URLConnection connection = url.openConnection();

                    HttpURLConnection httpConnection = (HttpURLConnection) connection;
                    httpConnection.setRequestMethod("GET");
                    httpConnection.connect();

                    if (httpConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
                        stream = httpConnection.getInputStream();

                        BufferedReader buffer = new BufferedReader(
                                new InputStreamReader(stream));
                        String s = "";
                        while ((s = buffer.readLine()) != null)
                            output.append(s);
                    }

                } catch (Exception ex) {
                    ex.printStackTrace();
                }
                return output.toString();
            }

            @Override
            protected List<Cmd> doInBackground(String... urls) {
                List<Cmd> videos = null;
                String xml = null;
                for (String url : urls) {
                    xml = getXmlFromUrl(url);

                    InputStream stream = new ByteArrayInputStream(
                            xml.getBytes());
                    videos = SAXXMLParser.parse(stream);
                    if (videos != null) {
                        for (Cmd cmd : videos) {
                            // String videoName = cmd.getVideoName();

                        }
                    }
                }

                return videos;

            }
        }
    }
}

【问题讨论】:

  • 嗯,对于 mPager,您在一个函数中声明它并在另一个函数中使用它。所以它在其他函数中不存在。您需要将其提升为类作用域变量。

标签: java android syntax android-viewpager


【解决方案1】:

两个问题:

  1. mPager 是在 onCreate() 方法中定义的,您正试图在另一种方法中使用它。您应该在任何方法之外的类级别声明它。

  2. GetXMLTaskImagePagerAdapter 的内部类。所以它在外面是不可见的。将此定义移到ImagePagerAdapter 之外的主类中,或将其用作ImagePagerAdapter.GetXMLTask

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    • 2013-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    相关资源
    最近更新 更多