2012-11-25 112 views
5

嗯,我决定只用pagertitlestrip去。我假设我使用的支持库不包含pagertabstrip。我不知道如何解决这个问题,因为我认为我已经正确更新了一切。 编辑:这只是不存在了吗?当我将PagerTabStrip更改为PagerTitleStrip时,一切正常,但我无法与期望的标题进行交互,因为这就是为什么我想使用PagerTabStrip。PageTabStrip类未发现异常

我已经回到基本找到我的问题的根源。我开始了一个新项目进口ABS。我设置了一个非常简单的pagerAdapter和一个简单的片段。我使用了一本来自普通书的例子,但我仍然遇到同样的错误。未找到类别例外。无法找到PagerTabStrip。发布堆栈每次都会得到相同的错误。如果我删除了PagerTabStrip,那么一切工作正常。

XML

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

    <android.support.v4.view.PagerTabStrip 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="top" /> 

</android.support.v4.view.ViewPager> 

MainActivity

package com.example.pagetabswipe; 

import android.os.Bundle; 
import android.support.v4.view.ViewPager; 
import android.view.Menu; 

import com.actionbarsherlock.app.SherlockFragmentActivity; 

public class MainActivity extends SherlockFragmentActivity { 

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

     ViewPager pager = (ViewPager)findViewById(R.id.pager); 
     pager.setAdapter(new SampleAdapter(getSupportFragmentManager(), this)); 
    } 
} 

适配器

package com.example.pagetabswipe; 

import android.content.Context; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 

public class SampleAdapter extends FragmentPagerAdapter { 
    Context ctxt=null; 
    public SampleAdapter(FragmentManager fm, Context ctxt) { 
     super(fm); 
     this.ctxt=ctxt; 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return (EditorFragment.newInstance(position)); 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return 10; 
    } 
    @Override 
    public String getPageTitle(int position) { 
    return(EditorFragment.getTitle(ctxt, position)); 
    } 
} 

片段

package com.example.pagetabswipe; 

import android.content.Context; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.EditText; 
import com.actionbarsherlock.app.SherlockFragment; 

public class EditorFragment extends SherlockFragment { 
    private static final String KEY_POSITION = "position"; 

    static EditorFragment newInstance(int position) { 
     EditorFragment frag = new EditorFragment(); 
     Bundle args = new Bundle(); 
     args.putInt(KEY_POSITION, position); 
     frag.setArguments(args); 
     return (frag); 
    } 

    static String getTitle(Context ctxt, int position) { 
     return (String.format(ctxt.getString(R.string.hint), position + 1)); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View result = inflater.inflate(R.layout.editor, container, false); 
     EditText editor = (EditText) result.findViewById(R.id.editor); 
     int position = getArguments().getInt(KEY_POSITION, -1); 
     editor.setHint(getTitle(getActivity(), position)); 
     return (result); 
    } 
} 

错误

11-24 18:01:25.630: E/AndroidRuntime(3505): FATAL EXCEPTION: main 
11-24 18:01:25.630: E/AndroidRuntime(3505): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.pagetabswipe/com.example.pagetabswipe.MainActivity}: android.view.InflateException: Binary XML file line #6: Error inflating class android.support.v4.view.PagerTabStrip 
11-24 18:01:25.630: E/AndroidRuntime(3505):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1696) 
11-24 18:01:25.630: E/AndroidRuntime(3505):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1716) 
11-24 18:01:25.630: E/AndroidRuntime(3505):  at android.app.ActivityThread.access$1500(ActivityThread.java:124) 
11-24 18:01:25.630: E/AndroidRuntime(3505):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:968) 
11-24 18:01:25.630: E/AndroidRuntime(3505):  at android.os.Handler.dispatchMessage(Handler.java:99) 
11-24 18:01:25.630: E/AndroidRuntime(3505):  at android.os.Looper.loop(Looper.java:130) 
11-24 18:01:25.630: E/AndroidRuntime(3505):  at android.app.ActivityThread.main(ActivityThread.java:3806) 
11-24 18:01:25.630: E/AndroidRuntime(3505):  at java.lang.reflect.Method.invokeNative(Native Method) 
11-24 18:01:25.630: E/AndroidRuntime(3505):  at java.lang.reflect.Method.invoke(Method.java:507) 
11-24 18:01:25.630: E/AndroidRuntime(3505):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
11-24 18:01:25.630: E/AndroidRuntime(3505):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
11-24 18:01:25.630: E/AndroidRuntime(3505):  at dalvik.system.NativeStart.main(Native Method) 
11-24 18:01:25.630: E/AndroidRuntime(3505): Caused by: android.view.InflateException: Binary XML file line #6: Error inflating class android.support.v4.view.PagerTabStrip 
11-24 18:01:25.630: E/AndroidRuntime(3505):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:581) 
11-24 18:01:25.630: E/AndroidRuntime(3505):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:623) 
11-24 18:01:25.630: E/AndroidRuntime(3505):  at android.view.LayoutInflater.inflate(LayoutInflater.java:408) 
11-24 18:01:25.630: E/AndroidRuntime(3505):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
11-24 18:01:25.630: E/AndroidRuntime(3505):  at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 
11-24 18:01:25.630: E/AndroidRuntime(3505):  at com.actionbarsherlock.internal.ActionBarSherlockCompat.setContentView(ActionBarSherlockCompat.java:853) 
11-24 18:01:25.630: E/AndroidRuntime(3505):  at com.actionbarsherlock.app.SherlockFragmentActivity.setContentView(SherlockFragmentActivity.java:262) 
11-24 18:01:25.630: E/AndroidRuntime(3505):  at com.example.pagetabswipe.MainActivity.onCreate(MainActivity.java:14) 
11-24 18:01:25.630: E/AndroidRuntime(3505):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
11-24 18:01:25.630: E/AndroidRuntime(3505):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1660) 
11-24 18:01:25.630: E/AndroidRuntime(3505):  ... 11 more 
11-24 18:01:25.630: E/AndroidRuntime(3505): Caused by: java.lang.ClassNotFoundException: android.support.v4.view.PagerTabStrip in loader dalvik.system.PathClassLoader[/data/app/com.example.pagetabswipe-2.apk] 
11-24 18:01:25.630: E/AndroidRuntime(3505):  at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240) 
11-24 18:01:25.630: E/AndroidRuntime(3505):  at java.lang.ClassLoader.loadClass(ClassLoader.java:551) 
11-24 18:01:25.630: E/AndroidRuntime(3505):  at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
11-24 18:01:25.630: E/AndroidRuntime(3505):  at android.view.LayoutInflater.createView(LayoutInflater.java:471) 
11-24 18:01:25.630: E/AndroidRuntime(3505):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:570) 
11-24 18:01:25.630: E/AndroidRuntime(3505):  ... 20 more 

任何帮助都会很棒。我不知道在哪里寻找解决这个问题。我觉得我错过了一些非常基本的东西,它阻止了在支持库中找到PagerTabStrip。

+0

你找到任何解决这个?我目前有同样的问题。 –

回答

9

对我来说,这最终是由于底层actionbarsherlock库有一个老版本的支持库。

从eclipse中,我从actionbarsherlock库项目的构建路径中删除了android支持库。

然后我在这里遵循的建议,PagerTabStrip cannot be resolved to a type

右键点击你的项目..

点击 “Android的工具” - >之后,它 “添加支持库”

将下载android-support.jar。并将其添加到您的项目。

后,你的日食将识别PagerTabStrip

+0

这听起来正确。我很久没有使用eclipse了,但ABS中的支持库阻止了我使用正确的支持库。我也有其他库的问题,这是一个很好的解决方案。 – doubleA