2014-12-02 43 views
0

即时通讯使用Android Studio 1.0 Rc1。android.support.v5.app.Fragment or android.app.Fragment?

我创建了一个MainActivity(TabbedActivity):

public class MainActivity extends ActionBarActivity implements ActionBar.TabListener 

它导入:

... 
import android.support.v4.app.Fragment; 
... 

因此继承人的问题: 我表现的另一个FragmentActivity:

public class BlankFragment extends Fragment { 

这对进口:

现在我想这样做:

public Fragment getItem(int position) { 
    // getItem is called to instantiate the fragment for the given page. 
    // Return a PlaceholderFragment (defined as a static inner class below). 

    switch (position){ 
     case 0: 
      return ScoutLogFragment.newInstance("a","b"); 
     case 1: 
      return BlankFragment.newInstance("a", "b"); 
     case 2: 
      return PlaceholderFragment.newInstance(position + 1); 
     default: 
      return PlaceholderFragment.newInstance(position + 1); 

    } 

} 

,但它告诉我:

“要求:进口android.support.v4.app.Fragment; 发现:de.example.local.scouttools.BlankFragment”

如果我改变我的主要业务进口android.app.Fragment;吨告诉我,我的getItem(INT位置)的返回类型是错误的。

我不明白为什么一个进口android.app.Fragment和其他android.support.app.v4.Fragment, 如何解决呢?

+0

您是否尝试手动更改导入? – busylee 2014-12-02 10:59:17

回答

2

这总是取决于其设备上运行您的片段。

支持V4与支持库一起使用。

它可以在的build.gradle如果你不使用支持库只与Android 3.0或更高版本的设备可能会使用您的片段被导入与

compile 'com.android.support:support-v4:21.0.0' 

如果您使用支持库,至少2.1的所有设备都可以使用您的Fragments。

保重:如果您使用支持库,您的应用程序将在文件大小上有点大。

确保您为支持库导入适当的片段类。它是

import android.support.v4.app.Fragment; 

如果你设备impor的ActionBar你还需要支持库v7。

导入是

import android.support.v7.app.ActionBarActivity; 

所需的库可以用的gradle

compile 'com.android.support:appcompat-v7:21.0.0' 

哦进口,和你的BlankFragment似乎导入了错误的类。验证它是否也使用BlankFragment类中的v4 Fragment。

+0

没问题,试试看。但是我仍然没有明白为什么默认情况下他会在MainActivity中导入支持库,而他在我的BlankFragment上导入android.app.Fragment:s – zooky 2014-12-02 12:33:51

+0

因为Intellij不分析其他来源。每个文件都会生成它自己的源文件。通常你应该得到一个提示来决定你想要导入哪个片段类。 – 2014-12-02 12:45:06

+0

好吧,所以我只是改变了我的导入到android.support.v4.Fragment(在BlankFragment),现在它的工作原理...现在我做了antoher Fragtment(listFragment),它也导入了android.app.Fragment .. do我需要将它手动更改为android.support.v4.Fragment,我将在未来的每一个片段中进行修改? :O – zooky 2014-12-02 12:49:54