我创建使用片段为tablet.I迄今创造左边几个按钮的应用程序和片段出现在点击按钮。
但我遇到的错误在我的MainActivity.java文件类型不匹配的错误:无法从 android.app.FragmentManager
转换为 android.support .v4.app.FragmentManager
这是我无法实现它。我已经进口的主要原因 android.support.v4.app.FragmentManager
。
如何解决我的问题?
我的$ C $下MainActivity.java
进口android.app.Activity;
进口android.os.Bundle;
进口android.support.v4.app.Fragment;
进口android.support.v4.app.FragmentManager;
进口android.support.v4.app.FragmentTransaction;
进口android.view.View;
进口android.widget.Button;
公共类MainActivity延伸活动{
片段片段
按钮BTN1,BTN2,btn3,btn4,btn5,btn6;
@覆盖
保护无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_main);
BTN1 =(按钮)findViewById(R.id.btn1);
BTN2 =(按钮)findViewById(R.id.btn2);
btn3 =(按钮)findViewById(R.id.btn3);
btn4 =(按钮)findViewById(R.id.btn4);
btn5 =(按钮)findViewById(R.id.btn5);
btn6 =(按钮)findViewById(R.id.btn6);
FragmentManager FM = getFragmentManager();
FragmentTransaction英尺= fm.beginTransaction();
StartFragment myfragment =新StartFragment();
ft.add(R.id.myfragment,myfragment);
ft.commit();
btn4.setOnClickListener(btnOnClickListener);
btn5.setOnClickListener(btnOnClickListener);
btn6.setOnClickListener(btnOnClickListener);
}
Button.OnClickListener btnOnClickListener =新Button.OnClickListener(){
@覆盖
公共无效的onClick(视图v)
{
片段newfragment;
如果(V == BTN1)
{
newfragment =新片段1();
}
否则,如果(V == BTN2)
{
newfragment =新Fragment2();
}
否则,如果(V == btn3)
{
newfragment =新Fragment3();
}
否则,如果(V == btn4)
{
newfragment =新Fragment4();
}
否则,如果(V == btn5)
{
newfragment =新Fragment5();
}
否则,如果(V == btn6)
{
newfragment =新Fragment6();
}
其他
{
newfragment =新StartFragment();
}
FragmentTransaction交易= getFragmentManager.beginTransaction();
transaction.replace(R.id.myfragment,newfragment);
transaction.addToBackStack(空);
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
器transaction.commit();
}
};
}
解决方案
您需要使用 getSupportFragmentManager()
在code,不是 getFragmentManager()
- 在这里看到更多的细节:http://developer.android.com/reference/android/support/v4/app/FragmentActivity.html#getSupportFragmentManager()
您还需要从 android.support.v4.app.FragmentActivity
扩展您的类,而不是从标准 android.Activity
来得到这个方法。
I am creating an app using Fragments for tablet.I have so far created some buttons on the left side and the fragments appear on clicking the buttons.
But i am experiencing error in my MainActivity.java file "Type mismatch error:cannot convert from android.app.FragmentManager
to android.support.v4.app.FragmentManager
" And that is the main reason that i cannot implement it.I have already imported android.support.v4.app.FragmentManager
.
How can i resolve my problem?
My code for MainActivity.java
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
Fragment fragment;
Button btn1,btn2,btn3,btn4,btn5,btn6;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1=(Button)findViewById(R.id.btn1);
btn2=(Button)findViewById(R.id.btn2);
btn3=(Button)findViewById(R.id.btn3);
btn4=(Button)findViewById(R.id.btn4);
btn5=(Button)findViewById(R.id.btn5);
btn6=(Button)findViewById(R.id.btn6);
FragmentManager fm=getFragmentManager();
FragmentTransaction ft=fm.beginTransaction();
StartFragment myfragment=new StartFragment();
ft.add(R.id.myfragment,myfragment);
ft.commit();
btn4.setOnClickListener(btnOnClickListener);
btn5.setOnClickListener(btnOnClickListener);
btn6.setOnClickListener(btnOnClickListener);
}
Button.OnClickListener btnOnClickListener=new Button.OnClickListener(){
@Override
public void onClick(View v)
{
Fragment newfragment;
if(v==btn1)
{
newfragment=new Fragment1();
}
else if(v==btn2)
{
newfragment=new Fragment2();
}
else if(v==btn3)
{
newfragment=new Fragment3();
}
else if(v==btn4)
{
newfragment=new Fragment4();
}
else if(v==btn5)
{
newfragment=new Fragment5();
}
else if(v==btn6)
{
newfragment=new Fragment6();
}
else
{
newfragment=new StartFragment();
}
FragmentTransaction transaction=getFragmentManager.beginTransaction();
transaction.replace(R.id.myfragment,newfragment);
transaction.addToBackStack(null);
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
transaction.commit();
}
};
}
解决方案
You need to use getSupportFragmentManager()
in your code, not getFragmentManager()
- see here for more details: http://developer.android.com/reference/android/support/v4/app/FragmentActivity.html#getSupportFragmentManager()
You also need to extend your class from android.support.v4.app.FragmentActivity
, not just from standard android.Activity
to get this method.