将扩展片段添加到Activity

时间:2013-07-22 16:01:34

标签: android android-fragments android-fragmentactivity

我一直在尝试在android中构建一个Master-Detail f low但想要将其中一个细节片段更改为不同的片段。由于这是我的第一个Android应用程序之一,我只是想在这个新片段上显示一张图片。为此,我构建了以下两个类

1)片段类(显示要显示的图片)

 package com.userName.miscapp;

import com.userName.miscapp.dummy.DummyContent;

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

public class PictureFragment extends Fragment {



    // Default Copy Constructor for the fragment
    public PictureFragment() {
    }

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

    @Override
    public View onCreateView ( LayoutInflater inflater , ViewGroup container , Bundle savedInstanceState )
    {
        View rootView = inflater.inflate(R.layout.fragment_simple_picture, container, false);
        return rootView;
    }

}

2)显示相同的活动

package com.userName.miscapp;

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

public class SimplePicture extends FragmentActivity {

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

        getActionBar().setDisplayHomeAsUpEnabled(true);


        if (savedInstanceState == null) {
            // Create the detail fragment and add it to the activity
            // using a fragment transaction.
            Bundle arguments = new Bundle();
            arguments.putString(ItemDetailFragment.ARG_ITEM_ID,
                    getIntent().getStringExtra(ItemDetailFragment.ARG_ITEM_ID));
            PictureFragment frag = new PictureFragment();
            frag.setArguments(arguments);
            android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager();
            android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.add(R.id.simple_picture_container,frag).commit();
            //setContentView(R.layout.activity_simple_picture);
    }

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

}

在编译时,它不会将PictureFragment识别为Fragment类的扩展。这是因为它清楚地写在第一个文件中。在Stackoverflow上搜索解决方案时说扩展FragmentActivity而不是Activity并尝试使用getSupportFragmentManager(),这两者都没有帮助。

PS:使用11作为当前应用程序的基础。

任何帮助将不胜感激

由于

1 个答案:

答案 0 :(得分:6)

这是因为您使用新API中的android.app.Fragment与支持库中的android.support.v4.app.FragmentManager一起使用,您应该将PictureFragment中的导入从android.app.Fragment替换为android.support.v4.app.Fragment以进行制作它有效。