我一直在尝试在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作为当前应用程序的基础。
任何帮助将不胜感激
由于
答案 0 :(得分:6)
这是因为您使用新API中的android.app.Fragment
与支持库中的android.support.v4.app.FragmentManager
一起使用,您应该将PictureFragment中的导入从android.app.Fragment
替换为android.support.v4.app.Fragment
以进行制作它有效。