2013-10-08 30 views
0

我使用actionbarsherlock创建项目“menuviewpager”我想从我的项目中放入类。但我有几个错误。我想将imageswitcher插入到manueviewpager的项目中的片段中。如何设置setContentView?

这里是我已经复制粘贴到projects.There代码四个错误,我得到: -

  • 的setContentView
  • findViewById
  • Fragment1.this;
  • .padding_medium);

Fragment1.java

package com.androidbegin.menuviewpagertutorial; 

import com.actionbarsherlock.app.SherlockFragment; 


import android.content.Context; 
import android.os.Bundle; 
import android.support.v4.view.PagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageView; 




public class Fragment1 extends SherlockFragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

     View rootView = inflater.inflate(R.layout.fragment1, container, false); 
     return rootView; 

    } 

    @Override 
     public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.tandaamaran);//<---------here are the error "setContentView" 

     ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);//<---------here are the error "findViewById" 
     ImagePagerAdapter adapter = new ImagePagerAdapter(); 
     viewPager.setAdapter(adapter); 
     } 

    private class ImagePagerAdapter extends PagerAdapter 
     { 
     private int[] mImages = new int[] 
     { 

      R.drawable.pic01, 
      R.drawable.pic02, 
      R.drawable.pic03, 
      R.drawable.pic04, 
      R.drawable.pic05, 
      R.drawable.pic06, 
      R.drawable.pic07, 
      R.drawable.pic08, 
      R.drawable.pic09, 
      R.drawable.pic10, 
      R.drawable.pic11, 
      R.drawable.pic12, 
      R.drawable.pic13, 
      R.drawable.pic14, 
      R.drawable.pic15, 
      R.drawable.pic16, 
      R.drawable.pic17, 
      R.drawable.pic18, 
      R.drawable.pic19, 
      R.drawable.pic20, 
      R.drawable.pic21, 
      R.drawable.pic22, 
      R.drawable.pic23, 
      R.drawable.pic24, 
      R.drawable.pic25, 
      R.drawable.pic26, 
      R.drawable.pic27, 
      R.drawable.pic28, 
      R.drawable.pic29, 
      R.drawable.pic30, 
      R.drawable.pic31, 
      R.drawable.pic32, 
      R.drawable.pic33, 
      R.drawable.pic34, 
      R.drawable.pic35, 
      R.drawable.pic36, 
      R.drawable.pic37, 
      R.drawable.pic38, 
      R.drawable.pic39, 
      R.drawable.pic40, 
      R.drawable.pic41, 
      R.drawable.pic42, 
      R.drawable.pic43, 
      R.drawable.pic44, 
      R.drawable.pic45, 
      R.drawable.pic46, 
      R.drawable.pic47, 
      R.drawable.pic48, 
      R.drawable.pic49, 
      R.drawable.pic50, 
      R.drawable.pic51, 
      R.drawable.pic52, 
      R.drawable.pic53, 
      R.drawable.pic54, 
      R.drawable.pic55, 
      R.drawable.pic56, 
      R.drawable.pic57, 
      R.drawable.pic58, 
      R.drawable.pic59, 
      R.drawable.pic60, 
      R.drawable.pic61, 
      R.drawable.pic62, 
      R.drawable.pic63, 
      R.drawable.pic64, 
      R.drawable.pic65, 
      R.drawable.pic66 

     }; 

     @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 = Fragment1.this;//<---------here are the error "Fragment1.this;" 
      ImageView imageView = new ImageView(context); 
      int padding = context.getResources().getDimensionPixelSize(
       R.dimen.padding_medium);//<---------here are the error ".padding_medium" 
      imageView.setPadding(padding, padding, padding, padding); 
      imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 
      imageView.setImageResource(mImages[position]); 
      ((ViewPager) container).addView(imageView, 0); 
      return imageView; 
     } 

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



} 

MainActivity.java

package com.androidbegin.menuviewpagertutorial; 

import com.actionbarsherlock.app.SherlockFragmentActivity; 
import com.actionbarsherlock.view.MenuItem; 

import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentTransaction; 
import android.support.v4.app.Fragment; 
import android.content.res.Configuration; 
import android.os.Bundle; 
import android.support.v4.app.ActionBarDrawerToggle; 
import android.support.v4.widget.DrawerLayout; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ListView; 
import android.support.v4.view.GravityCompat; 

public class MainActivity extends SherlockFragmentActivity { 

    // Declare Variables 
    DrawerLayout mDrawerLayout; 
    ListView mDrawerList; 
    ActionBarDrawerToggle mDrawerToggle; 
    MenuListAdapter mMenuAdapter; 
    String[] title; 
    String[] subtitle; 
    int[] icon; 
    Fragment fragment1 = new Fragment1(); 
    Fragment fragment2 = new Fragment2(); 
    private CharSequence mDrawerTitle; 
    private CharSequence mTitle; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     // Get the view from drawer_main.xml 
     setContentView(R.layout.drawer_main); 

     // Get the Title 
     mTitle = mDrawerTitle = getTitle(); 

     // Generate title 
     title = new String[] { "Title Fragment 1", "Title Fragment 2" }; 

     // Generate subtitle 
     subtitle = new String[] { "Subtitle Fragment 1", "Subtitle Fragment 2" }; 

     // Generate icon 
     icon = new int[] { R.drawable.action_about, R.drawable.action_settings }; 

     // Locate DrawerLayout in drawer_main.xml 
     mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 

     // Locate ListView in drawer_main.xml 
     mDrawerList = (ListView) findViewById(R.id.listview_drawer); 

     // Set a custom shadow that overlays the main content when the drawer 
     // opens 
     mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, 
       GravityCompat.START); 

     // Pass string arrays to MenuListAdapter 
     mMenuAdapter = new MenuListAdapter(MainActivity.this, title, subtitle, 
       icon); 

     // Set the MenuListAdapter to the ListView 
     mDrawerList.setAdapter(mMenuAdapter); 

     // Capture listview menu item click 
     mDrawerList.setOnItemClickListener(new DrawerItemClickListener()); 

     // Enable ActionBar app icon to behave as action to toggle nav drawer 
     getSupportActionBar().setHomeButtonEnabled(true); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

     // ActionBarDrawerToggle ties together the the proper interactions 
     // between the sliding drawer and the action bar app icon 
     mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, 
       R.drawable.ic_drawer, R.string.drawer_open, 
       R.string.drawer_close) { 

      public void onDrawerClosed(View view) { 
       // TODO Auto-generated method stub 
       super.onDrawerClosed(view); 
      } 

      public void onDrawerOpened(View drawerView) { 
       // TODO Auto-generated method stub 
       // Set the title on the action when drawer open 
       getSupportActionBar().setTitle(mDrawerTitle); 
       super.onDrawerOpened(drawerView); 
      } 
     }; 

     mDrawerLayout.setDrawerListener(mDrawerToggle); 

     if (savedInstanceState == null) { 
      selectItem(0); 
     } 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 

     if (item.getItemId() == android.R.id.home) { 

      if (mDrawerLayout.isDrawerOpen(mDrawerList)) { 
       mDrawerLayout.closeDrawer(mDrawerList); 
      } else { 
       mDrawerLayout.openDrawer(mDrawerList); 
      } 
     } 

     return super.onOptionsItemSelected(item); 
    } 

    // ListView click listener in the navigation drawer 
    private class DrawerItemClickListener implements 
      ListView.OnItemClickListener { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, 
       long id) { 
      selectItem(position); 
     } 
    } 

    private void selectItem(int position) { 

     FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
     // Locate Position 
     switch (position) { 
     case 0: 
      ft.replace(R.id.content_frame, fragment1); 
      break; 
     case 1: 
      ft.replace(R.id.content_frame, fragment2); 
      break; 
     } 
     ft.commit(); 
     mDrawerList.setItemChecked(position, true); 
     // Get the title followed by the position 
     setTitle(title[position]); 
     // Close drawer 
     mDrawerLayout.closeDrawer(mDrawerList); 
    } 

    @Override 
    protected void onPostCreate(Bundle savedInstanceState) { 
     super.onPostCreate(savedInstanceState); 
     // Sync the toggle state after onRestoreInstanceState has occurred. 
     mDrawerToggle.syncState(); 
    } 

    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     // Pass any configuration change to the drawer toggles 
     mDrawerToggle.onConfigurationChanged(newConfig); 
    } 

    @Override 
    public void setTitle(CharSequence title) { 
     mTitle = title; 
     getSupportActionBar().setTitle(mTitle); 
    } 

    @Override 
    public void onBackPressed() { 

     FragmentManager manager = getSupportFragmentManager(); 
     if (manager.getBackStackEntryCount() > 0) { 
      // If there are back-stack entries, leave the FragmentActivity 
      // implementation take care of them. 
      manager.popBackStack(); 

     } else { 
      // Otherwise, ask user if he wants to leave :) 
      super.onBackPressed(); 
     } 
    } 
} 

MenuListAdapter.java

package com.androidbegin.menuviewpagertutorial; 

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class MenuListAdapter extends BaseAdapter { 

    // Declare Variables 
    Context context; 
    String[] mTitle; 
    String[] mSubTitle; 
    int[] mIcon; 
    LayoutInflater inflater; 

    public MenuListAdapter(Context context, String[] title, String[] subtitle, 
      int[] icon) { 
     this.context = context; 
     this.mTitle = title; 
     this.mSubTitle = subtitle; 
     this.mIcon = icon; 
    } 

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

    @Override 
    public Object getItem(int position) { 
     return mTitle[position]; 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     // Declare Variables 
     TextView txtTitle; 
     TextView txtSubTitle; 
     ImageView imgIcon; 

     inflater = (LayoutInflater) context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View itemView = inflater.inflate(R.layout.drawer_list_item, parent, 
       false); 

     // Locate the TextViews in drawer_list_item.xml 
     txtTitle = (TextView) itemView.findViewById(R.id.title); 
     txtSubTitle = (TextView) itemView.findViewById(R.id.subtitle); 

     // Locate the ImageView in drawer_list_item.xml 
     imgIcon = (ImageView) itemView.findViewById(R.id.icon); 

     // Set the results into TextViews 
     txtTitle.setText(mTitle[position]); 
     txtSubTitle.setText(mSubTitle[position]); 

     // Set the results into ImageView 
     imgIcon.setImageResource(mIcon[position]); 

     return itemView; 
    } 

} 

fragment1.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical"> 

<Gallery 

    android:id="@+id/gallery1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" /> 

<ImageSwitcher 
    android:id="@+id/switcher1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentBottom="true" /> 



<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:text="@string/Fragment1" /> 

<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/view_pager" 
android:layout_width="match_parent" 
android:layout_height="match_parent" /> 

tandaamaran.xml

<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/view_pager" 
android:layout_width="match_parent" 
android:layout_height="match_parent" /> 

AndroidManiefest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.androidbegin.menuviewpagertutorial" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="4" 
    android:targetSdkVersion="15" /> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/Theme.Sherlock" > 
    <activity android:name=".MainActivity" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

回答

0

你应该初始化您的UI对象是这样的:

@Override 
    public void onViewCreated(View view, Bundle savedInstanceState){ 
     super.onViewCreated(view, savedInstanceState); 
     initUIobjects(view); 
    } 

    private void initUIobjects(View view){ 
     ViewPager viewPager = (ViewPager) view.findViewById(R.id.view_pager); 
    //... and so on 
    } 

代替的onCreate

+0

谢谢男人,它工作很棒! – mickey37

0

http://developer.android.com/reference/android/app/Activity.html#setContentView(android.view.View)

setContentView是活动类的方法。一旦布局膨胀,您可以初始化视图。所以ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager)失败。

我不确定你在做什么或者从你复制粘贴代码的位置。

你可能想活动情境

Context context = Fragment1.this; 

所以使用getActivtiy()

Context context = getActivity(); 
+0

它的工作原理! thnks很多男人 – mickey37