网上的解决方法针对的都是把FragmentTransaction转化成V4包下的FragmentTransaction有问题
但是,我却遇到了相反的情况。
无法由V4包下的FragmentTransaction转化成app.FragmentTransaction有没有高人来指点一下啊??
注:**extends android.support.v4.app.Fragment**这个千万不能改
---------------------------------------------------------------------------------华丽丽的分割线下是代码片段
package com.example.myslidepage.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.*;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;import com.example.myslidepage.R;/**
* Created by lenovo on 4/30/2019.
*/public class Fragment2 extends android.support.v4.app.Fragment implements View.OnClickListener { public Button btn_news,btn_contact,btn_message,btn_setting;
public MyFragment f1,f2,f3,f4;
@Nullable public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { View view =inflater.inflate(R.layout.tab2,container,false);
btn_news = view.findViewById(R.id.btn_news);
btn_contact = view.findViewById(R.id.btn_contact);
btn_message = view.findViewById(R.id.btn_message);
btn_setting = view.findViewById(R.id.btn_setting); btn_news.setOnClickListener(this);
btn_contact.setOnClickListener(this);
btn_message.setOnClickListener(this);
btn_setting.setOnClickListener(this); //第一次初始化首页默认显示第一个fragment
initFragment1();
initFragment2();
initFragment3();
initFragment4();
return view;
}
@Override
public void onClick(View v) {
if(v==btn_news){
initFragment1();
}
else if(v==btn_message){
initFragment2();
}
else if(v==btn_contact){
initFragment3();
}
else{
initFragment4();
}
} private void initFragment1(){
android.support.v4.app.FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
//开启事务,fragment的控制是由事务来实现的
FragmentTransaction transaction=(FragmentTransaction)fragmentManager.beginTransaction();
//第一种方式(add),初始化fragment并添加到事务中,如果为null就new一个
if(f1 == null){
f1 = new MyFragment("消息",R.drawable.message_selected);
transaction.add(R.id.main_frame_layout, f1);
}
//隐藏所有fragment
hideFragment(transaction);
//显示需要显示的fragment
transaction.show(f1); transaction.commit();
} private void initFragment2(){
android.support.v4.app.FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
FragmentTransaction transaction=(FragmentTransaction)fragmentManager.beginTransaction();
if(f2 == null){
f2 = new MyFragment("消息",R.drawable.message_selected);
transaction.add(R.id.main_frame_layout, f2);
}
//隐藏所有fragment
hideFragment(transaction);
//显示需要显示的fragment
transaction.show(f2);
transaction.commit();
}
private void initFragment3(){
android.support.v4.app.FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
FragmentTransaction transaction=(FragmentTransaction)fragmentManager.beginTransaction(); if(f3 == null){
f3 = new MyFragment("消息",R.drawable.message_selected);
transaction.add(R.id.main_frame_layout, f3);
}
//隐藏所有fragment
hideFragment(transaction);
//显示需要显示的fragment
transaction.show(f3);
transaction.commit();
}
private void initFragment4(){
android.support.v4.app.FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
FragmentTransaction transaction=(FragmentTransaction)fragmentManager.beginTransaction();
if(f4 == null){
f4 = new MyFragment("消息",R.drawable.message_selected);
transaction.add(R.id.main_frame_layout, f4);
}
//隐藏所有fragment
hideFragment(transaction);
//显示需要显示的fragment
transaction.show(f4);
transaction.commit();
}
//这个方法其实很巧,这个hide方法看一眼就是唬人的。这个方法将所有的fragment都hide了,因为他的判断条件是if(f1 != null)
//因为一开始初始化的时候,f1f2f3都已经初始化一遍了,所以不可能都为空,既然都不为空,那就都隐藏。然后点击哪个方法,那个再显示。
private void hideFragment(FragmentTransaction transaction) {
if(f1 != null){
transaction.hide(f1);
}
if(f2 != null){
transaction.hide(f2);
}
if(f3 != null){
transaction.hide(f3);
}
if(f4 != null){
transaction.hide(f4);
}
}
}
最后,如果有高手真的能帮我解决,但是有感觉三言两语说不清楚,可以加我微信:Zy00619990518
但是,我却遇到了相反的情况。
无法由V4包下的FragmentTransaction转化成app.FragmentTransaction有没有高人来指点一下啊??
注:**extends android.support.v4.app.Fragment**这个千万不能改
---------------------------------------------------------------------------------华丽丽的分割线下是代码片段
package com.example.myslidepage.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.*;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;import com.example.myslidepage.R;/**
* Created by lenovo on 4/30/2019.
*/public class Fragment2 extends android.support.v4.app.Fragment implements View.OnClickListener { public Button btn_news,btn_contact,btn_message,btn_setting;
public MyFragment f1,f2,f3,f4;
@Nullable public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { View view =inflater.inflate(R.layout.tab2,container,false);
btn_news = view.findViewById(R.id.btn_news);
btn_contact = view.findViewById(R.id.btn_contact);
btn_message = view.findViewById(R.id.btn_message);
btn_setting = view.findViewById(R.id.btn_setting); btn_news.setOnClickListener(this);
btn_contact.setOnClickListener(this);
btn_message.setOnClickListener(this);
btn_setting.setOnClickListener(this); //第一次初始化首页默认显示第一个fragment
initFragment1();
initFragment2();
initFragment3();
initFragment4();
return view;
}
@Override
public void onClick(View v) {
if(v==btn_news){
initFragment1();
}
else if(v==btn_message){
initFragment2();
}
else if(v==btn_contact){
initFragment3();
}
else{
initFragment4();
}
} private void initFragment1(){
android.support.v4.app.FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
//开启事务,fragment的控制是由事务来实现的
FragmentTransaction transaction=(FragmentTransaction)fragmentManager.beginTransaction();
//第一种方式(add),初始化fragment并添加到事务中,如果为null就new一个
if(f1 == null){
f1 = new MyFragment("消息",R.drawable.message_selected);
transaction.add(R.id.main_frame_layout, f1);
}
//隐藏所有fragment
hideFragment(transaction);
//显示需要显示的fragment
transaction.show(f1); transaction.commit();
} private void initFragment2(){
android.support.v4.app.FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
FragmentTransaction transaction=(FragmentTransaction)fragmentManager.beginTransaction();
if(f2 == null){
f2 = new MyFragment("消息",R.drawable.message_selected);
transaction.add(R.id.main_frame_layout, f2);
}
//隐藏所有fragment
hideFragment(transaction);
//显示需要显示的fragment
transaction.show(f2);
transaction.commit();
}
private void initFragment3(){
android.support.v4.app.FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
FragmentTransaction transaction=(FragmentTransaction)fragmentManager.beginTransaction(); if(f3 == null){
f3 = new MyFragment("消息",R.drawable.message_selected);
transaction.add(R.id.main_frame_layout, f3);
}
//隐藏所有fragment
hideFragment(transaction);
//显示需要显示的fragment
transaction.show(f3);
transaction.commit();
}
private void initFragment4(){
android.support.v4.app.FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
FragmentTransaction transaction=(FragmentTransaction)fragmentManager.beginTransaction();
if(f4 == null){
f4 = new MyFragment("消息",R.drawable.message_selected);
transaction.add(R.id.main_frame_layout, f4);
}
//隐藏所有fragment
hideFragment(transaction);
//显示需要显示的fragment
transaction.show(f4);
transaction.commit();
}
//这个方法其实很巧,这个hide方法看一眼就是唬人的。这个方法将所有的fragment都hide了,因为他的判断条件是if(f1 != null)
//因为一开始初始化的时候,f1f2f3都已经初始化一遍了,所以不可能都为空,既然都不为空,那就都隐藏。然后点击哪个方法,那个再显示。
private void hideFragment(FragmentTransaction transaction) {
if(f1 != null){
transaction.hide(f1);
}
if(f2 != null){
transaction.hide(f2);
}
if(f3 != null){
transaction.hide(f3);
}
if(f4 != null){
transaction.hide(f4);
}
}
}
最后,如果有高手真的能帮我解决,但是有感觉三言两语说不清楚,可以加我微信:Zy00619990518
改成
import android.support.v4.app.FragmentTransaction;你既然用的v4包就别再用sdk里的类啊