2012-12-31 2 views
0

화면의 일부를 스 와이프하려고합니다. 나는 이것을 위해 PageAdapter를 사용한다. 부분을 ​​강타 나는 세 가지 활동
1 ShowMap
2 ShowAddress 내가 ShowMap 활동의 레이아웃의 ID를 얻기에 노력하고 있지만 예외를 찾을 수없는 자원을 보여주는 것활동 스 와이프 : - 리소스를 찾을 수 없음 예외


3. ShowContact 있습니다. 여기 MyPageAdapter 클래스

public class anyclass extends Activity{ 
    private class MyPagerAdapter extends PagerAdapter { 

     public int getCount(){ 
      return 3; 
     } 

     public Object instantiateItem(View collection, int position) { 

      LayoutInflater inflater = (LayoutInflater) collection.getContext() 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

      int resId = 0; 
      switch (position) { 
      case 0: 
       resId = showHotelContact();    
       break; 
      case 1: 
       resId = showHotelAddress();   
       break;    
      case 2:  
       resId = showHotelMap();    
       break;  
      } 

      View view = inflater.inflate(resId, null); 
      ((ViewPager) collection).addView(view, 0); 
      return view; 
     } 

    } 

    public int showHotelMap() 
    { 

     Intent bookIntent = new Intent();  
     bookIntent.setClass(HotelMap.this,ShowMap.class); 
     startActivityForResult(bookIntent,RESID); 

     return RESID; 
    } 
    public int showHotelAddress() 
    { 
     int resId; 
     resId = R.layout.hoteladdress; 
     return resId; 
    } 
    public int showHotelContact() 
    { 
     int resId; 
     resId = R.layout.hotelcontact; 
     return resId; 
    } 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

     if (resultCode == RESULT_OK) { 
      RESID = data.getIntExtra("SelectedBook", resultCode); 
     } 
    } 
    } 

내가 showMap 레이아웃의 ID를 필요로하고 내가 내 PageAdapter에게 반환하려고하지만 예외를 보여주는 것 내 코드입니다. 그리고 ShowMap 액티비티입니다.

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

       int resId = R.layout.hotelmap; 
      Intent returnIntent = new Intent(); 
      returnIntent.putExtra("SelectedBook",resId); 
      setResult(RESULT_OK,returnIntent);   
      finish(); 

     MapView mapView = (MapView) findViewById(R.id.mapView); 
     mapView.setBuiltInZoomControls(true); 
     mapView.setStreetView(true); 
     MapController mc = mapView.getController(); 
     double lat = Double.parseDouble("48.85827758964043"); // latitude 
     double lon = Double.parseDouble("2.294543981552124"); // longitude 
     GeoPoint geoPoint = new GeoPoint((int)(lat * 1E6), (int)(lon * 1E6)); 
     mc.animateTo(geoPoint); 
     mc.setZoom(15); 
     mapView.invalidate(); 
     List<Overlay> mapOverlays = mapView.getOverlays(); 
     Drawable drawable = this.getResources().getDrawable(R.drawable.ic_launcher); 

    } 

은 여기 내 로그 캣입니다.

12-31 13:14:26.740: E/AndroidRuntime(31140): android.content.res.Resources$NotFoundException: Resource ID #0x0 
    12-31 13:14:26.740: E/AndroidRuntime(31140): at android.content.res.Resources.getValue(Resources.java:1104) 
    12-31 13:14:26.740: E/AndroidRuntime(31140): at android.content.res.Resources.loadXmlResourceParser(Resources.java:2342) 
    12-31 13:14:26.740: E/AndroidRuntime(31140): at android.content.res.Resources.getLayout(Resources.java:943) 
    12-31 13:14:26.740: E/AndroidRuntime(31140): at android.view.LayoutInflater.inflate(LayoutInflater.java:394) 
    12-31 13:14:26.740: E/AndroidRuntime(31140): at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
    12-31 13:14:26.740: E/AndroidRuntime(31140): at com..HotelMap$MyPagerAdapter.instantiateItem(HotelMap.java:52) 
    12-31 13:14:26.740: E/AndroidRuntime(31140): at android.support.v4.view.PagerAdapter.instantiateItem(PagerAdapter.java:110) 
    12-31 13:14:26.740: E/AndroidRuntime(31140): at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:801) 
    12-31 13:14:26.740: E/AndroidRuntime(31140): at android.support.v4.view.ViewPager.populate(ViewPager.java:930) 
    12-31 13:14:26.740: E/AndroidRuntime(31140): at android.support.v4.view.ViewPager.populate(ViewPager.java:881) 
+1

를 시도? 'RESID' 값은 무엇입니까? – Faizan

+0

onCreate 메소드에서 finish()를 제거하고 – Taruni

+0

@Faizan을 시도하십시오. resId에서 레이아웃 ID를 가져오고이 맵을 표시하기 위해 pageAdapter 클래스로 리턴하려고합니다. –

답변

3
startActivityForResult(bookIntent,RESID); 

나는이 비동기 호출 것 같다. 프로그램은 시작 활동이 끝날 때까지 기다리지 않고 결과를 반환하지만이 줄을 실행하고 다음 줄로 이동합니다. 따라서 showHotelMap() 메서드에서 반환 된 RESID은 입니다.

0

유()`showHotelMap`에 뭐 ..

public class TabsViewPagerFragmentActivity extends FragmentActivity implements TabHost.OnTabChangeListener, ViewPager.OnPageChangeListener { 

    private TabHost mTabHost; 
    private ViewPager mViewPager; 
    private HashMap<String, TabInfo> mapTabInfo = new HashMap<String, TabsViewPagerFragmentActivity.TabInfo>(); 
    private PagerAdapter mPagerAdapter; 

    private class TabInfo { 
     private String tag; 
     private Class<?> clss; 
     private Bundle args; 
     private Fragment fragment; 
     TabInfo(String tag, Class<?> clazz, Bundle args) { 
      this.tag = tag; 
      this.clss = clazz; 
      this.args = args; 
     } 

    } 

    class TabFactory implements TabContentFactory { 

     private final Context mContext; 


     public TabFactory(Context context) { 
      mContext = context; 
     } 

     /** (non-Javadoc) 
     * @see android.widget.TabHost.TabContentFactory#createTabContent(java.lang.String) 
     */ 
     public View createTabContent(String tag) { 
      View v = new View(mContext); 
      v.setMinimumWidth(0); 
      v.setMinimumHeight(0); 
      return v; 
     } 

    } 
    /** (non-Javadoc) 
    * @see android.support.v4.app.FragmentActivity#onCreate(android.os.Bundle) 
    */ 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     // Inflate the layout 
     setContentView(R.layout.tabs_viewpager_layout); 
     // Initialise the TabHost 
     this.initialiseTabHost(savedInstanceState); 
     if (savedInstanceState != null) { 
      mTabHost.setCurrentTabByTag(savedInstanceState.getString("tab")); //set the tab as per the saved state 
     } 
     // Intialise ViewPager 
     this.intialiseViewPager(); 
    } 

    /** (non-Javadoc) 
    * @see android.support.v4.app.FragmentActivity#onSaveInstanceState(android.os.Bundle) 
    */ 
    protected void onSaveInstanceState(Bundle outState) { 
     outState.putString("tab", mTabHost.getCurrentTabTag()); //save the tab selected 
     super.onSaveInstanceState(outState); 
    } 

    /** 
    * Initialise ViewPager 
    */ 
    private void intialiseViewPager() { 

     List<Fragment> fragments = new Vector<Fragment>(); 
     fragments.add(Fragment.instantiate(this, Tab1Fragment.class.getName())); 
     fragments.add(Fragment.instantiate(this, Tab2Fragment.class.getName())); 
     fragments.add(Fragment.instantiate(this, Tab3Fragment.class.getName())); 
     this.mPagerAdapter = new PagerAdapter(super.getSupportFragmentManager(), fragments); 
     // 
     this.mViewPager = (ViewPager)super.findViewById(R.id.viewpager); 
     this.mViewPager.setAdapter(this.mPagerAdapter); 
     this.mViewPager.setOnPageChangeListener(this); 
    } 

    /** 
    * Initialise the Tab Host 
    */ 
    private void initialiseTabHost(Bundle args) { 
     mTabHost = (TabHost)findViewById(android.R.id.tabhost); 
     mTabHost.setup(); 
     TabInfo tabInfo = null; 
     TabsViewPagerFragmentActivity.AddTab(this, this.mTabHost, this.mTabHost.newTabSpec("Tab1").setIndicator("Tab 1"), (tabInfo = new TabInfo("Tab1", Tab1Fragment.class, args))); 
     this.mapTabInfo.put(tabInfo.tag, tabInfo); 
     TabsViewPagerFragmentActivity.AddTab(this, this.mTabHost, this.mTabHost.newTabSpec("Tab2").setIndicator("Tab 2"), (tabInfo = new TabInfo("Tab2", Tab2Fragment.class, args))); 
     this.mapTabInfo.put(tabInfo.tag, tabInfo); 
     TabsViewPagerFragmentActivity.AddTab(this, this.mTabHost, this.mTabHost.newTabSpec("Tab3").setIndicator("Tab 3"), (tabInfo = new TabInfo("Tab3", Tab3Fragment.class, args))); 
     this.mapTabInfo.put(tabInfo.tag, tabInfo); 
     // Default to first tab 
     //this.onTabChanged("Tab1"); 
     // 
     mTabHost.setOnTabChangedListener(this); 
    } 

    /** 
    * Add Tab content to the Tabhost 
    * @param activity 
    * @param tabHost 
    * @param tabSpec 
    * @param clss 
    * @param args 
    */ 
    private static void AddTab(TabsViewPagerFragmentActivity activity, TabHost tabHost, TabHost.TabSpec tabSpec, TabInfo tabInfo) { 
     // Attach a Tab view factory to the spec 
     tabSpec.setContent(activity.new TabFactory(activity)); 
     tabHost.addTab(tabSpec); 
    } 

    /** (non-Javadoc) 
    * @see android.widget.TabHost.OnTabChangeListener#onTabChanged(java.lang.String) 
    */ 
    public void onTabChanged(String tag) { 
     //TabInfo newTab = this.mapTabInfo.get(tag); 
     int pos = this.mTabHost.getCurrentTab(); 
     this.mViewPager.setCurrentItem(pos); 
    } 

    /* (non-Javadoc) 
    * @see android.support.v4.view.ViewPager.OnPageChangeListener#onPageScrolled(int, float, int) 
    */ 
    @Override 
    public void onPageScrolled(int position, float positionOffset, 
      int positionOffsetPixels) { 
     // TODO Auto-generated method stub 

    } 

    /* (non-Javadoc) 
    * @see android.support.v4.view.ViewPager.OnPageChangeListener#onPageSelected(int) 
    */ 
    @Override 
    public void onPageSelected(int position) { 
     // TODO Auto-generated method stub 
     this.mTabHost.setCurrentTab(position); 
    } 

    /* (non-Javadoc) 
    * @see android.support.v4.view.ViewPager.OnPageChangeListener#onPageScrollStateChanged(int) 
    */ 
    @Override 
    public void onPageScrollStateChanged(int state) { 
     // TODO Auto-generated method stub 

    } 
} 

그렇지 않으면 주어진 링크에서 도움을받을 .. 당신을 도움이 될 수 같은

http://thepseudocoder.wordpress.com/2011/10/13/android-tabs-viewpager-swipe-able-tabs-ftw/

관련 문제