gpt4 book ai didi

android - 通过 Fragment 中的 Intent 启动 Fragment

转载 作者:IT老高 更新时间:2023-10-28 22:04:40 27 4
gpt4 key购买 nike

我想启动一个新 fragment 来查看一些数据。目前,我有一个主要 Activity ,其中包含一堆操作栏选项卡,每个选项卡都是一个 fragment 。所以,在一个标签 fragment 中,我有一个按钮,chartsButton。我已经为它设置了我的 onclicklistener,这是 onClick 方法:

public OnClickListener chartsListener = new OnClickListener() {

@Override
public void onClick(View v) {
Intent chartFragment = new Intent();
startActivity(chartFragment);
}
};

现在,正如我所说,此监听器位于扩展 Fragment 的类中。所以,我想通过替换整个屏幕的 Intent 来启动一个新的 fragment (chartsFragment)。当用户点击返回时,它会将他们带回选项卡和主要 Activity 。这是我的图表 fragment :

public class chartsFragment extends Fragment {

public View onCreateView() {
//LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState
LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
return (inflater.inflate(R.layout.chartfragment, null));
}
}

我正在处理的当前错误:“android.content.ActivityNotFoundException:未找到处理 Intent {} 的 Activity ”。没关系,我知道我可以使用 getActivity().startActivity(chartsFragment),但这会导致同样的错误。我想我在这里寻找的是如何从 fragment 中启动一个 Intent 以打开一个新 fragment ?

最佳答案

问题的答案很简单:用新的 Fragment 替换当前的 Fragment 并将事务推送到后台堆栈。这保留了后退按钮的行为...

创建一个新的 Activity 确实违背了使用 fragment 的整个目的......非常适得其反。

@Override
public void onClick(View v) {
// Create new fragment and transaction
Fragment newFragment = new chartsFragment();
// consider using Java coding conventions (upper first char class names!!!)
FragmentTransaction transaction = getFragmentManager().beginTransaction();

// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);

// Commit the transaction
transaction.commit();
}

http://developer.android.com/guide/components/fragments.html#Transactions

关于android - 通过 Fragment 中的 Intent 启动 Fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9831728/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com