Android低版本中的碎片

4
我开始理解Android片段,但仍感到困惑。我需要一点帮助。Android片段自API级别11开始支持,但您可以为较低级别的API下载“support.v4”库包。首先,我创建了一个新项目来尝试在API级别15上使用片段。然后我在API级别8上进行了相同的操作,但它不起作用...我导入了外部jar并且它看到了应有的所有导入...这里似乎出了问题?
这是我的主要类:
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;

public class Fragment2Activity extends FragmentActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

我的主要布局XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

        <fragment 
   android:name="com.frag.Fragment2.frag"
   android:id="@+id/frag"
   android:layout_width="match_parent"
   android:layout_height="match_parent" />

</LinearLayout>

我的片段类:

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

public class frag extends Fragment {
       @Override
       public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
          // Inflate the layout for this fragment
          View v = inflater.inflate(R.layout.hello_fragment, container, false);
          return v;
       }
    }

以下是我的碎片布局XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <TextView
   android:layout_width="fill_parent"
   android:layout_height="match_parent"
   android:text="THIS IS FRAGMENT"
   android:background="@drawable/ic_launcher"
/>

</LinearLayout>

已修复


1
你解决了这个问题吗?我也遇到了同样的问题,你是怎么解决的? - MikeIsrael
4个回答

6

您仍在使用不存在的android.view.fragment类。您需要在旧设备上切换到android.support.v4.app.fragment


1
实际上是“android.support.v4.app.Fragment”,我正在使用它;/ - Kęstas Venslauskas
似乎不是所有地方都有:ClassNotFoundException: android.view.fragment - Jave
这是我的片段类导入... ;/import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; - Kęstas Venslauskas
我尝试将extends Activity更改为extends FragmentActivity,并从support.v4包中导入FragmentActivity类... 但结果仍然相同... - Kęstas Venslauskas

0

如果您因为minSdkVersion而使用较低的API,那么您应该知道您可以使用最新的SDK并将minSdkVersion设置为较低的值。它们不必相同。


如果我这样做,仍然无法在Android模拟器2.2上运行它,但我仍然可以在4.0.3上运行。我在清单中更改了以下内容:<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" />。 - Kęstas Venslauskas

0

好的,我也遇到了同样的问题,最后终于解决了。首先确保你拥有最新的ADT工具。

1) 进入使用片段的每个活动并让它们从FragmentActivity扩展,而不是Activity

2) 如果您还没有将支持库导入到构建中,请右键单击项目->Android工具->添加支持库

3) 确保在您的xml中标记为<fragment />而不是<android.support.v4.app.fragment />

希望这对您有所帮助,花了我一段时间才把它搞定。


0

实际上,这个问题来自ADT工具。

  1. 通过src > gen > Private > other...重新排序Java Build Path中的"Order and Export"

  2. 添加Support Library >> android-support-v4.jar


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接