Java 了解选项卡中从活动到片段的基本转换

Java 了解选项卡中从活动到片段的基本转换,java,android,android-fragments,tabs,android-transitions,Java,Android,Android Fragments,Tabs,Android Transitions,我正在制作一个android应用程序,它有一个标签。在我的一个选项卡中,我将从片段(比如片段3)转到活动。这很好,完成后的活动必须到达所需的选项卡,如片段2。这就是我现在面临的问题。在浏览了很多文档之后,我发现了一个东西,但仍然没有得到想要的想法,因为我是一个新手。链接如下: My MainActivity.java包含选项卡,每个选项卡都有片段。现在我要做的是我要从Fragment GroupEditFragment.java转到另一个名为AddAdminActivity.java的活动这对

我正在制作一个android应用程序,它有一个标签。在我的一个选项卡中,我将从片段(比如片段3)转到活动。这很好,完成后的活动必须到达所需的选项卡,如片段2。这就是我现在面临的问题。在浏览了很多文档之后,我发现了一个东西,但仍然没有得到想要的想法,因为我是一个新手。链接如下:

My MainActivity.java包含选项卡,每个选项卡都有片段。现在我要做的是我要从Fragment GroupEditFragment.java转到另一个名为AddAdminActivity.java的活动这对我来说很好。现在在完成AddAdminActivity.java之后,我有了一个按钮。此按钮必须返回MainActivity.java选项卡内名为AddFragment.java的片段。我不知道如何执行此任务,因为我知道如何进入上一页

case androd.R.id.home
      finish();
      return true;
但这不是我想要的。我想回到另一个名为AddFragment.java的片段

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

MainActivity.java在MainActivity.java选项卡中有选项卡->来自此选项卡组EditFragment.java->AddAdminActivity.java->AddFragment.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.
        }
    }); }
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;
} }
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);

}
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;
}
编辑: 为了实现我在本活动中所做的相同问题,我将从这里转移到片段:

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 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.
        }
    }); }
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;
} }
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);

}

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

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

我已经这样做了,但我面临一个颜色更改选项卡的问题,第一个选项卡仍然是彩色的,并且在进入片段时不会更改所选选项卡的颜色。感谢您在Main Activity中选择选项卡或为其着色的方式。在onActivityResult like SetSelected(位置)中也应执行相同的操作。这将选择所需的选项卡并删除以前的选择。好的,我想做EIDT,并向您展示我是如何做到这一点的。因为我做得很努力,但没有得到结果。请查看我的编辑。我也解决了颜色问题!谢谢你的帮助真是太好了:)