gpt4 book ai didi

java - 了解选项卡中从 Activity 到 fragment 的基本转换

转载 作者:行者123 更新时间:2023-12-02 12:30:01 25 4
gpt4 key购买 nike

我正在制作一个带有选项卡的 Android 应用程序。在我的一个选项卡中,我将从 fragment (例如 fragment 3)转到 Activity 。这工作正常,完成后此 Activity 必须到达所需的选项卡,例如 fragment 2。现在这就是我现在面临的问题。在浏览了大量文档之后,我发现了一些东西,但仍然没有得到想要的想法,因为我是一个初学者。链接如下:

Transactions form fragment to activity

我的 MainActivity.java 包含选项卡,并且每个选项卡都有 fragment 。现在我要做的是我要从 Fragment GroupEditFragment.java 转到另一个名为 AddAdminActivity.java 的 Activity 这对我来说效果很好。现在,完成 AddAdminActivity.java 后,其中有一个按钮。该按钮必须返回到 MainActivity.java 选项卡内的 fragment ,该 fragment 名为 AddFragment.java。我不知道如何执行此任务,因为我知道如何转到上一页。

case androd.R.id.home
finish();
return true;

但这不是我想要的。我想回到另一个名为 AddFragment.java 的 fragment 。

这是我可以给你的流程图:

MainActivity.java 有选项卡 -> 从此选项卡 GroupEditFragment.java -> AddAdminActivity.java -> 再次在 MainActivity.java 选项卡中添加Fragment.java

这是我想要访问 AddFragment.java 的代码

<强>1。 AddAdminActivity.java

public class AddAdminActivity extends AppCompatActivity {

private static final int DIALOGUE_ALERT = 10;

private ListView mListView;

private Button mButton;

//EditText input;
private String[] items;
MyListAdapter adapter;

private AlertDialog alertDialog;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_admin);

getSupportActionBar().setHomeAsUpIndicator(R.drawable.back);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(false);

mButton = (Button) findViewById(R.id.addAdminGroup);

mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Used intent but it is giving me an error, need to implement something to come back to the desired fragment.
}
}); }

2.AddFragment.java是这样的:

public class AddFragment extends Fragment {

private ImageButton imageButton;
private GridView gridView;

ArrayList<File> list = new ArrayList<>();

public AddFragment() {
// 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_add, container, false);
imageButton = (ImageButton) view.findViewById(R.id.gotoButton);
gridView = (GridView) view.findViewById(R.id.grid_view);
videoReader(Environment.getExternalStorageDirectory());
gridView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
gridView.setAdapter(new ImageAdapter(getContext()));



gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
//for making the button visible as ssonas the item gets selected
imageButton.setVisibility(view.VISIBLE);
}
});

return view;
}

这是我要访问 AddAdminActivity.java 的 fragment

3.GroupEditFragment.java

public class GroupEditFragment extends Fragment {

private Button addButton;

public GroupEditFragment() {
// 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_group_edit, container, false);
addButton = (Button) view.findViewById(R.id.addGroup);

addButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getContext(),AddAdminActivity.class);
startActivity(intent);
}
});

return view;
} }

编辑: 为了实现同样的问题,我在我的 Activity 中从移动到 fragment 的位置完成了此操作:

mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(AddAdminActivity.this,MainActivity.class);
intent.putExtra("change",1);
startActivity(intent);
}
});

这是我的 MainActivity.java :

1.MainActivity.java

public class MainActivity extends AppCompatActivity {


private TabLayout tabLayout;
private ViewPager simpleViewPager;

private static final int PERMISSION_REQUEST_CODE = 1;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setContentView(R.layout.activity_main);
simpleViewPager = (ViewPager) findViewById(R.id.simpleViewPager);
tabLayout = (TabLayout) findViewById(R.id.simpleTabLayout);

final TabLayout.Tab firstTab = tabLayout.newTab();
firstTab.setIcon(R.drawable.home);
tabLayout.addTab(firstTab, true);

final TabLayout.Tab seconTab = tabLayout.newTab();
seconTab.setIcon(R.drawable.plus);
tabLayout.addTab(seconTab, true);

final TabLayout.Tab thirdTab = tabLayout.newTab();
thirdTab.setIcon(R.drawable.videocall);
tabLayout.addTab(thirdTab, true);

final TabLayout.Tab fourthTab = tabLayout.newTab();
fourthTab.setIcon(R.drawable.downloads);
tabLayout.addTab(fourthTab, true);

final TabLayout.Tab fifthTab = tabLayout.newTab();
fifthTab.setIcon(R.drawable.groupwhite);
tabLayout.addTab(fifthTab, true);

final TabLayout.Tab sixthTab = tabLayout.newTab();
sixthTab.setIcon(R.drawable.addshoppingcart);
tabLayout.addTab(sixthTab, true);

final MyPagerAdapter myPagerAdapter = new MyPagerAdapter(getSupportFragmentManager(),
tabLayout.getTabCount());
simpleViewPager.setAdapter(myPagerAdapter);
int change = getIntent().getIntExtra("change",0);
if(change==1){
tabLayout.getTabAt(0).getIcon().clearColorFilter();
tabLayout.getTabAt(1).getIcon().setColorFilter(Color.parseColor("#00E676"), PorterDuff.Mode.SRC_IN);
simpleViewPager.setCurrentItem(1);
}

//for color code changing with the tabs
tabLayout.getTabAt(0).getIcon().setColorFilter(Color.parseColor("#00E676"), PorterDuff.Mode.SRC_IN);
tabLayout.getTabAt(1).getIcon().setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_IN);
tabLayout.getTabAt(2).getIcon().setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_IN);
tabLayout.getTabAt(3).getIcon().setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_IN);
tabLayout.getTabAt(4).getIcon().setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_IN);
tabLayout.getTabAt(5).getIcon().setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_IN);

simpleViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));

tabLayout.addOnTabSelectedListener(tabListener);
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);

}

设置适配器后,我提到了返回同一 fragment 的 if 条件。但颜色保留在我的第一个位置图标上,而不是第二个位置图标上。然而我的 tabIndicator 就在上面。第二个。我也对 if 条件做了一些更改,但问题仍然存在。

最佳答案

@Alok 这就是我目前在我的应用程序中所做的事情。您可以使用 startActivityForResult 调用 AddAdminActivity.java,当用户单击 AddAdminActivity.java 中的按钮时,您可以设置Result。之后,在 MainActivity.java 的 onActivityResult 中,您可以用 AddFragment 替换当前 fragment 。

关于java - 了解选项卡中从 Activity 到 fragment 的基本转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45322670/

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