【发布时间】:2014-02-06 05:53:12
【问题描述】:
我已经多次尝试将两个片段添加到一个操作选项卡中。当我按下操作选项卡“搜索”时,我想加载一个片段,当我 滑动时它会转到第二个片段在Action选项卡下。请在我使用的代码下方找到。
MainActivity.java
package com.example.swipetabs;
import com.tabs.*;
import android.os.Bundle;
import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.ActionBar.TabListener;
import android.app.Activity;
import android.app.FragmentTransaction;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.Menu;
import android.widget.ImageView;
import com.comparenow.*;
public class MainActivity extends FragmentActivity implements TabListener {
ActionBar action_bar;
ViewPager viewPager;
ImageView creditCards;
Fragment fragement;
Fragment fragement1;
Fragment fragement2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager=(ViewPager)findViewById(R.id.pager);
viewPager.setAdapter(new MyAdoptor(getSupportFragmentManager()));
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
action_bar.setSelectedNavigationItem(arg0);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
action_bar=getActionBar();
//action_bar.setBackgroundDrawable(d)
action_bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.Tab tab1=action_bar.newTab();
tab1.setText("Login");
tab1.setTabListener(this);
ActionBar.Tab tab2=action_bar.newTab();
tab2.setText("Compare Now");
tab2.setTabListener(this);
ActionBar.Tab tab3=action_bar.newTab();
tab3.setText("Search");
tab3.setTabListener(this);
action_bar.addTab(tab1);
action_bar.addTab(tab2);
action_bar.addTab(tab3);
}
public void switchToFragmentB(){
viewPager.setCurrentItem(4);
}
@Override
public void onTabReselected(Tab arg0, FragmentTransaction arg1) {
// TODO Auto-generated method stub
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
//this is the code
viewPager.setCurrentItem(tab.getPosition());
String name=(String)tab.getText().toString();
// compare it to the tab you would like to do something with
if (name == "Search") {
//load the 1st fragment
fragement1= new CreditCards();
getFragmentManager().beginTransaction()
.setCustomAnimations(android.R.animator.fade_in,
android.R.animator.fade_out)
.replace(R.id.store_fragment_container, fragment).commit();
//load the 2nd fragment
fragement2 = new Loginfrag();
getFragmentManager().beginTransaction()
.setCustomAnimations(android.R.animator.fade_in,
android.R.animator.fade_out)
.replace(R.id.imageView1,fragement2).commit();
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
}
class MyAdoptor extends FragmentPagerAdapter
{
public MyAdoptor(FragmentManager fm) {
super(fm);
// TODO Auto-generated constructor stub
}
@Override
public Fragment getItem(int arg0) {
// TODO Auto-generated method stub
Fragment fragement=null;
if(arg0==0)
{
fragement=new Loginfrag();
}
if(arg0==1)
{
fragement=new Comparefrag();
}
if(arg0==2)
{
fragement=new Searchfrag();
}
System.out.print("<><><><>");
return fragement;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return 3;
}
}
CreditCards.java (Fragment) /Loginfrag .java (Fragement) 两者都是一样的,它也有相应的xml文件。
package com.comparenow;
import com.example.swipetabs.R;
import com.example.swipetabs.R.layout;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class CreditCards extends Fragment {
public CreditCards() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.creditcards_c, container, false);
}
下面的代码段有问题,我不确定它的参数。
fragement1= new CreditCards();
getFragmentManager().beginTransaction()
.setCustomAnimations(android.R.animator.fade_in,
android.R.animator.fade_out)
.replace(R.id.store_fragment_container, fragment).commit();
//load the 2nd fragment
fragement2 = new Loginfrag();
getFragmentManager().beginTransaction()
.setCustomAnimations(android.R.animator.fade_in,
android.R.animator.fade_out)
.replace(R.id.imageView1,fragement2).commit();
}
【问题讨论】:
-
我认为你需要在第一个完成动画之后调用下一个片段,所以需要添加动画监听器 - 见这个链接 - stackoverflow.com/questions/11120372/…
-
@Neha 我只关心在一个操作选项卡下更改片段
-
如果您确实在一个操作选项卡下更改了多个片段,您面临什么问题?
-
@Neha 我已经发布了我收到错误的代码段。谢谢让我知道。
-
你在哪里初始化片段..在代码中我可以看到片段1和片段2..片段在哪里?
标签: android