Android 在碎片活动中使用什么代替startActivity(意向)?
出于某些原因,在FragmentActivity中,startActivity不起作用,当我单击按钮时,它会使应用程序崩溃,并出现以下错误:Android 在碎片活动中使用什么代替startActivity(意向)?,android,android-fragments,android-intent,onclicklistener,android-fragmentactivity,Android,Android Fragments,Android Intent,Onclicklistener,Android Fragmentactivity,出于某些原因,在FragmentActivity中,startActivity不起作用,当我单击按钮时,它会使应用程序崩溃,并出现以下错误: java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.name.app/com.example.name.app.WorldTabBar}: java.lang.ClassCastException: com.example.name.app
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.name.app/com.example.name.app.WorldTabBar}: java.lang.ClassCastException: com.example.name.app.WorldTabBar cannot be cast to android.app.Activity
这是我的密码:
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback{
Button live;
private GoogleMap mMap;
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
final SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
live=findViewById((R.id.GoToLive));
live.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view) {
Intent startIntent = new Intent(MapsActivity.this, WorldTabBar.class);
startActivity(startIntent);
}
});
startActivity使应用程序在碎片活动中崩溃。FragmentActivity不允许我使用getActivity,因为我只是应该使用它。但这不适用于startActivity
我尝试使用just extends Fragment代替FragmentActivity,并使用rootView将onCreate更改为onCreateView方法,然后添加getActivity everywhere和
getActivity().startActivity(startIntent); //<-didn't work, crashes again
…^上面的代码在没有startActivity的情况下可以自己工作,但我认为如果没有开始代码,现在我的overridePendingTransition代码无法识别。那么,是否有一些代码可以在片段活动中使用,它们的工作原理类似于startActivity,但不是startActivity
编辑:
WorldTabBar类:
public class WorldTabBar extends Fragment {
Button world;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_world_tabbar, container, false);
world=rootView.findViewById(R.id.GoToWorld);
world.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent startIntent = new Intent(getContext(), MapsActivity.class);
startActivity(startIntent);
getActivity().overridePendingTransition(R.anim.slide_in_right, R.anim.no_anim);
}
});
return rootView;
}
}
java.lang.ClassCastException:com.example.name.app.WorldTabBar不能强制转换为android.app.Activity
您的WorldTabBar扩展了片段,而不是活动类
1您需要添加活动,然后向其中添加WorldTabBar片段
例如,创建WorldTabBarActivity extends活动,在使用此活动时将其注册到清单上:
Intent startIntent = new Intent(MapsActivity.this, WorldTabBarActivity.class);
使用此处描述的XML将片段添加到活动的选项之一:。另一个选项-在运行时添加片段-
2更改代码以使其成为活动:
public class WorldTabBar extends AppCompatActivity {
您可以添加WorldTabBar的代码吗?它扩展了哪个类?我在代码中添加了WorldTabBar类。如果您想从活动类开始片段,请查看以下链接:。这可能对你有帮助。那我该换什么呢?
Intent startIntent = new Intent(MapsActivity.this, WorldTabBarActivity.class);
public class WorldTabBar extends AppCompatActivity {