我的BlankFragment_kind(分类页面)继承了AppCompatActivity,在导航java代码那里怎么传回fragment啊,类型都不一样,我也不会把BlankFragment_kind用fragment写,只会写Activity。
package com.example.smallshop;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import androidx.viewpager.widget.ViewPager;
public class BlankFragment_kind extends Fragment {
private String[] toolsList;
private View[] views;
private LayoutInflater inflater;
private ScrollView scrollView;
private int scrllViewWidth = 0, scrollViewMiddle = 0;
private ViewPager shop_pager;
private int currentItem = 0;
private ShopAdapter shopAdapter;
public BlankFragment_kind() {
// Required empty public constructor
}
public static BlankFragment_kind newInstance() {
return new BlankFragment_kind();
}
@SuppressLint("MissingInflatedId")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_blank_kind, container, false);
scrollView = rootView.findViewById(R.id.tools_left);
shopAdapter = new ShopAdapter(getChildFragmentManager());
this.inflater = LayoutInflater.from(getActivity());
showToolsView(rootView);
initPager(rootView);
return rootView;
}
/**
* 动态生成显示items中的 textview
*/
private void showToolsView(View rootView) {
toolsList = new String[]{"潮流女装", "春夏女装 ", "品牌女装", "秋冬女装", "大码女装" };
LinearLayout toolsLayout = rootView.findViewById(R.id.tools_up);
TextView[] toolsTextViews = new TextView[toolsList.length];
views = new View[toolsList.length];
for (int i = 0; i < toolsList.length; i++) {
@SuppressLint("InflateParams") View view = inflater.inflate(R.layout.menu_layout, null);
view.setId(i);
view.setOnClickListener(toolsItemListener);
@SuppressLint({"MissingInflatedId", "LocalSuppress"}) TextView textView = view.findViewById(R.id.text);
textView.setText(toolsList[i]);
toolsLayout.addView(view);
toolsTextViews[i] = textView;
views[i] = view;
}
}
private final View.OnClickListener toolsItemListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
shop_pager.setCurrentItem(v.getId());
}
};
/**
* initPager<br/>
* 初始化 ViewPager 控件相关内容
*/
private void initPager(View rootView) {
shop_pager = rootView.findViewById(R.id.goods_pager);
shop_pager.setAdapter(shopAdapter);
shop_pager.addOnPageChangeListener(onPageChangeListener);
}
/**
* OnPageChangeListener<br/>
* 监听 ViewPager 选项卡变化事件
*/
private final ViewPager.OnPageChangeListener onPageChangeListener = new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
if (shop_pager.getCurrentItem() != arg0) shop_pager.setCurrentItem(arg0);
if (currentItem != arg0) {
changeTextLocation(arg0);
}
currentItem = arg0;
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
};
/**
* ViewPager 加载选项卡
*/
private class ShopAdapter extends FragmentPagerAdapter {
public ShopAdapter(FragmentManager fm) {
super(fm, FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
}
@NonNull
@Override
public Fragment getItem(int arg0) {
Fragment fragment = new Fragment_list();
Bundle bundle = new Bundle();
String str = toolsList[arg0];
bundle.putString("typename", str);
fragment.setArguments(bundle);
return fragment;
}
@Override
public int getCount() {
return toolsList.length;
}
}
/**
* 改变栏目位置
*
* @param clickPosition
*/
private void changeTextLocation(int clickPosition) {
int x = (views[clickPosition].getTop() - getScrollViewMiddle() + (getViewheight(views[clickPosition]) / 2));
scrollView.smoothScrollTo(0, x);
}
/**
* 返回 ScrollView 的中间位置
*
* @return
*/
private int getScrollViewMiddle() {
if (scrollViewMiddle == 0)
scrollViewMiddle = getScrollViewheight() / 2;
return scrollViewMiddle;
}
/**
* 返回 ScrollView 的宽度
*
* @return
*/
private int getScrollViewheight() {
if (scrllViewWidth == 0)
scrllViewWidth = scrollView.getBottom() - scrollView.getTop();
return scrllViewWidth;
}
/**
* 返回 view 的宽度
*
* @param view
* @return
*/
private int getViewheight(View view) {
return view.getBottom() - view.getTop();
}
}
引用 皆我百晓生 小程序回复内容作答:
如果你想把Android的Activity中的数值传回给继承自AppCompatActivity的BlankFragment_kind(分类页面),你可以使用Bundle来实现。首先,在Activity中创建一个Bundle对象并将要传递的数值放入其中,然后通过调用Fragment的setArguments()方法来传递Bundle。在Fragment中,你可以通过getArguments()方法获取到传递的Bundle,并从中取出数值。
这是一个简单的示例代码:
在你的Activity中:
// 创建并设置Bundle
Bundle bundle = new Bundle();
bundle.putString("key", "value");
// 实例化Fragment
BlankFragment_kind fragment = new BlankFragment_kind();
fragment.setArguments(bundle);
// 使用FragmentManager将Fragment添加到布局中
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.fragment_container, fragment);
fragmentTransaction.commit();
在你的Fragment中:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// 获取传递的Bundle
Bundle bundle = getArguments();
if (bundle != null) {
// 从Bundle中获取你传递的数值
String value = bundle.getString("key");
// 在这里处理数值
}
// 其他代码
}
这样就可以在Activity和Fragment之间传递数值了。请注意,你需要根据自己的具体情况调整代码。
【相关推荐】
package com.example.zhangyu.myapplication;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
/**
* A simple {@link Fragment} subclass.
*/
public class BlankFragment extends Fragment {
private TextView tvTest;
public BlankFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_blank, container, false);
tvTest = view.findViewById(R.id.tv_test);
return view;
}
String data;
@Override
public void onAttach(Context context) {
super.onAttach(context);
//2.通过Activity中的public方法来传值
data = ((MainActivity) context).getData();
}
@Override
public void onStart() {
super.onStart();
if (isAdded()) {
//1.通过Bundle来传值
final String s = getArguments().getString("key");
tvTest.append("\n" + s);
//2.通过Activity中的public方法来传值
tvTest.append("\n" + data);
}
}
}