2017-07-26 14 views
0

タブを持つアンドロイドアプリケーションを作っています。私のタブの一つでは、断片(例:断片3)から活動に移っています。これは正常に動作しています。完了後のこのアクティビティは、フラグメント2のような目的のタブに来なければなりません。これが今直面している問題です。私は初心者のように、多くの文書を通った後、私は1つのものを見つけましたが、依然として望ましいアイデアは得られませんでした。リンクは以下の通りである:タブのアクティビティからフラグメントへの基本的な移行を理解する

Transactions form fragment to activity

私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はタブがあります - >このタブGroupEditFragment.javaから - MainActivity.javaタブで> AddAdminActivity.java-> AddFragment.java再び

は、これは私がAddFragment.java

1. AddAdminActivity.java

に来てほしいところから私のコードです

2.AddFragment.javaはこのようなものです:これは私がAddAdminActivity.java

3.GroupEditFragment.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; 
} 

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

編集: 私はフラグメントに移動するよどこから私の活動で、この中でやった同じ問題達成するため:

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

} 

設定アダプタの後、私は言及してきた私の条件は同じフラグメントに戻ります。しかし、私の最初のポジションアイコンには色が残ります。しかし、私のtabIndicatorはそれにあります。 2番目のもの。 if条件でもいくつか変更を加えましたが、問題は解決しません。

答えて

1

@ Alokこれは私が現在私のアプリでやっていることです。 AddAdminActivityを呼び出すことができます。JavaのstartActivityForResultを使用し、ユーザーがAddAdminActivity.javaのボタンをクリックすると、setResultを実行できます。その後、MainActivity.javaのonActivityResultで、現在のフラグメントをAddFragmentで置き換えることができます。

+0

私はこれを行っていますが、Imはカラー変更タブの問題に直面しています。最初のタブは着色されており、フラグメントに来るときに選択したタブの色は変わりません。ありがとう – Alok

+0

MainActivityと同じときにタブをどのように選択しているのか色分けするかは、setAlectivityResult(setSlected(position))のように行う必要があります。必要なタブを選択して前の選択を削除します – Aditi

+0

うーん、私はそれをどのようにしているかを示します。私はそれをやっているが、結果を得ていないから。私の編集を参照してください。 – Alok

関連する問題