2013-03-25 2 views
4

가로 스 와이프를 구현하는 방법을 배우고 있고 레이아웃에 ViewPager의 앱을 시작하려고 할 때 다음 오류가 발생합니다.android ViewPager xml inflate error

03-25 17:12:13.166: E/AndroidRuntime(19449): FATAL EXCEPTION: main 
03-25 17:12:13.166: E/AndroidRuntime(19449): java.lang.RuntimeException: Unable to start activity ComponentInfo{androidapps.viewpagerdemo/androidapps.viewpagerdemo.MainActivity}: android.view.InflateException: Binary XML file line #11: Error inflating class android.support.v4.app.ViewPager 
03-25 17:12:13.166: E/AndroidRuntime(19449): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) 
03-25 17:12:13.166: E/AndroidRuntime(19449): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
03-25 17:12:13.166: E/AndroidRuntime(19449): at android.app.ActivityThread.access$600(ActivityThread.java:130) 
03-25 17:12:13.166: E/AndroidRuntime(19449): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
03-25 17:12:13.166: E/AndroidRuntime(19449): at android.os.Handler.dispatchMessage(Handler.java:99) 
03-25 17:12:13.166: E/AndroidRuntime(19449): at android.os.Looper.loop(Looper.java:137) 
03-25 17:12:13.166: E/AndroidRuntime(19449): at android.app.ActivityThread.main(ActivityThread.java:4745) 
03-25 17:12:13.166: E/AndroidRuntime(19449): at java.lang.reflect.Method.invokeNative(Native Method) 
03-25 17:12:13.166: E/AndroidRuntime(19449): at java.lang.reflect.Method.invoke(Method.java:511) 
03-25 17:12:13.166: E/AndroidRuntime(19449): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
03-25 17:12:13.166: E/AndroidRuntime(19449): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
03-25 17:12:13.166: E/AndroidRuntime(19449): at dalvik.system.NativeStart.main(Native Method) 
03-25 17:12:13.166: E/AndroidRuntime(19449): Caused by: android.view.InflateException: Binary XML file line #11: Error inflating class android.support.v4.app.ViewPager 
03-25 17:12:13.166: E/AndroidRuntime(19449): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:698) 
03-25 17:12:13.166: E/AndroidRuntime(19449): at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
03-25 17:12:13.166: E/AndroidRuntime(19449): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
03-25 17:12:13.166: E/AndroidRuntime(19449): at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
03-25 17:12:13.166: E/AndroidRuntime(19449): at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
03-25 17:12:13.166: E/AndroidRuntime(19449): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:256) 
03-25 17:12:13.166: E/AndroidRuntime(19449): at android.app.Activity.setContentView(Activity.java:1867) 
03-25 17:12:13.166: E/AndroidRuntime(19449): at androidapps.viewpagerdemo.MainActivity.onCreate(MainActivity.java:14) 
03-25 17:12:13.166: E/AndroidRuntime(19449): at android.app.Activity.performCreate(Activity.java:5008) 
03-25 17:12:13.166: E/AndroidRuntime(19449): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
03-25 17:12:13.166: E/AndroidRuntime(19449): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) 
03-25 17:12:13.166: E/AndroidRuntime(19449): ... 11 more 

나는이 링크에서 해결책을 시도했지만 저를 위해 작동하지 않았습니다. Error inflating class android.support.v4.view.ViewPager

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".MainActivity" > 

<android.support.v4.app.ViewPager 
    android:id="@+id/pager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    /> 

</RelativeLayout> 

조각의 레이아웃 파일은 단순히 하나의 TextView로 구성되어 있습니다. 다음과 같이 조각 클래스는 다음과 같습니다

public class MyFragment extends Fragment{ 
int mCurrentPage; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    /** Getting the arguments to the Bundle object */ 
    Bundle data = getArguments(); 

    /** Getting integer data of the key current_page from the bundle */ 
    mCurrentPage = data.getInt("current_page", 0); 

} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.frag_layout, container,false); 
    TextView tv = (TextView) v.findViewById(R.id.tv); 
    tv.setText("You are viewing the page #" + mCurrentPage + "\n\n" + "Swipe Horizontally left/right"); 
    return v; 
} 
} 

FragmentPagerAdapter 클래스 :

public class MainActivity extends FragmentActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ViewPager pager = (ViewPager) findViewById(R.id.pager); 

    /** Instantiating FragmentPagerAdapter */ 
    MyAdapter pagerAdapter = new MyAdapter(getSupportFragmentManager()); 

    /** Setting the pagerAdapter to the pager object */ 
    pager.setAdapter(pagerAdapter); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

} 
+1

여기에 코드를 게시하십시오 –

+0

android-support-v4.jar이 내 프로젝트의 libs 폴더에 있으며 빌드 경로에도 추가했습니다. –

+0

XML 파일 – Lefteris

답변

4

안녕 난 그냥 레이아웃 파일 &의 작업에 어떤 변화를 만들었습니다 : 주요 활동

public class MyAdapter extends FragmentPagerAdapter{ 

final int PAGE_COUNT = 3; 
public MyAdapter(FragmentManager fm) { 
    super(fm); 
    // TODO Auto-generated constructor stub 
} 

@Override 
public Fragment getItem(int arg0) { 
    // TODO Auto-generated method stub 
    MyFragment myFragment = new MyFragment(); 
    Bundle data = new Bundle(); 
    data.putInt("current_page", arg0+1); 
    myFragment.setArguments(data); 
    return myFragment; 
} 

@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return PAGE_COUNT; 
} 
} 

이제 괜찮아 ..

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:padding="10dp" > 

    <android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" /> 

</RelativeLayout> 

이를 확인할 수 있습니다

코드 아래 enter image description here

이 refrance ---->에 대한 그냥

주요 활동 :

package com.example.viewpage; 

import android.app.Activity; 
import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.view.ViewPager; 
import android.view.Menu; 

public class MainActivity extends FragmentActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     ViewPager pager = (ViewPager) findViewById(R.id.pager); 

     /** Instantiating FragmentPagerAdapter */ 
     MyAdapter pagerAdapter = new MyAdapter(getSupportFragmentManager()); 

     /** Setting the pagerAdapter to the pager object */ 
     pager.setAdapter(pagerAdapter); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 
} 

MyAdapter :

package com.example.viewpage; 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 

public class MyAdapter extends android.support.v4.app.FragmentPagerAdapter { 

    final int PAGE_COUNT = 3; 

    public MyAdapter(FragmentManager fm) { 
     super(fm); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public Fragment getItem(int arg0) { 
     // TODO Auto-generated method stub 
     MyFragment myFragment = new MyFragment(); 
     Bundle data = new Bundle(); 
     data.putInt("current_page", arg0 + 1); 
     myFragment.setArguments(data); 
     return myFragment; 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return PAGE_COUNT; 
    } 

} 

MyFragment :

package com.example.viewpage; 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 

public class MyFragment extends Fragment { 

    private int mCurrentPage; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     /** Getting the arguments to the Bundle object */ 
     Bundle data = getArguments(); 

     /** Getting integer data of the key current_page from the bundle */ 
     mCurrentPage = data.getInt("current_page", 0); 

    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.frag_layout, container, false); 
     TextView tv = (TextView) v.findViewById(R.id.textView1); 
     tv.setText("You are viewing the page #" + mCurrentPage + "\n\n" 
       + "Swipe Horizontally left/right"); 
     return v; 
    } 
} 

frag_layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Large Text" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

</LinearLayout> 

참고 : lib 폴더에 지원 android-support-v4.jar를 추가합니다. Build Path에이 항아리를 추가하십시오. 이제 project property-->Build Path--> Order & Export--> select all --> ok으로 가십시오. Clean & RUN.

+0

답변을 주셔서 감사합니다. 나는 그것을 시도했지만 여전히 동일한 오류가 발생합니다 –

+0

답변에서 내 메모를 확인하십시오. 당신은 android-support-v4.jar를 사용 했습니까 ?? 내 대답에서 MyAdapter 클래스를 대체하십시오 ... 여전히 당신은 그때 그냥 당신의 대구로 내 모든 코드를 복사 & 지나서 얻지 못합니다. –

+0

그래, 내가 네 노트에 언급 한대로 했어. MyAdapter 클래스를 코드로 바꿨습니다. 변경하지 않았습니다. 나는 정확한 문제에 대해 내 손가락을 집어 넣을 수 없다. 나는 당신의 전체 코드를 붙여 넣는 복사가 어떤 차이를 만들지 모른다면 –