【发布时间】: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