从 TableLayout 中的当前片段中获取信息
Get information from current fragment in TableLayout
我正在使用 TabLayout 并且 ViewPager.I 成功地集成了它并从 fragments.This 使用了我的 mainTabActivity java class
public class MainTabActivity extends AppCompatActivity {
private CustomTabLayout tabLayout;
private ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_simple_tabs);
viewPager = (ViewPager) findViewById(R.id.viewpager);
setupViewPager(viewPager);
tabLayout = (CustomTabLayout)findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
findViewById(R.id.tab_ticket).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(MainTabActivity.this, TicketsActivity.class);
startActivity(intent);
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
}
});
findViewById(R.id.tab_main).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.e("BottomClickAction","BottomClickAction");
}
});
}
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(new OneWayFragment(), "ONE");
adapter.addFragment(new TwoFragment(), "ROUND");
viewPager.setAdapter(adapter);
}
class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
}
我也有自定义底部 bar.Now 我试图解释我的 problem.In 我的片段包含一些元素,例如微调器,文本视图或 etc.My 问题 is:How 我从当前片段中获取信息时我点击底栏?我的意思是,spinner 的数据信息,Textview 的 gettext 等等。
我该如何解决我的问题?是否可以不使用静态变量?
您可以在 viewpager 中找到片段 OneWayFragment
,如下所示:
public OneWayFragment getOneWayFragment() {
return (OneWayFragment) getSupportFragmentManager().findFragmentByTag(
"android:switcher:" + R.id.viewPager + ":" + 0);
}
public TwoFragment getTwoFragment() {
return (TwoFragment) getSupportFragmentManager().findFragmentByTag(
"android:switcher:" + R.id.viewPager + ":" + 1);
}
您可以从 OneWayFragment
或 TwoFragment
访问 public 方法获取您想要的数据。
例如,从 OneWayFragment
:
创建方法 getText
public String getData() {
return tv.getText().toString();
}
并在您的 MainTabActivity
中。例如,您单击按钮的 ID 为 tab_main
,您从 OneWayFragment
.
获取数据
findViewById(R.id.tab_main).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.e("BottomClickAction","BottomClickAction");
OneWayFragment fragment = getOneWayFragment();
if(fragment != null) {
String data = fragment.getData();
}
}
});
在片段中创建自己的方法,如 getFragmentData()。随时访问此方法。你的情况:
1) 引用你的片段
_oneWayaFrgament= 新的 OneWayFragment()
adapter.addFragment(_oneWayaFrgament, "ONE");
2) 调用 _oneWayaFrgament.getFragmentData()
类似地在 TwoFragment 上应用您的条件逻辑。
请通过识别当前片段调用 getFragmentData()。
是的,您可以在您的片段中包含 public 个变量和方法,然后您可以设置和获取您的变量或从您的 activity 中调用您的方法。
例如在你的片段中:
public String myString;
public Button someButton;
或
public void fillMyTextView(){//some codes};
并且在您的 activity 中,您可以像这样调用这些方法或访问您的视图:
myFragment.fillMyTextView("hello");
myFragment.someButton.setText("my btn");
我建议您将单例创建为状态对象(根据需要作为视图的状态,您可以使用整数或短字节或字节作为状态标记内存)随心所欲地使用,并在完成使用后取消.通过这种方式,您可以在任何时间点访问任何片段或 activity 中的任何数据。您也可以使用其他实现,例如接口类型,因为设计和架构 way.But 取决于状态的重要性。
我正在使用 TabLayout 并且 ViewPager.I 成功地集成了它并从 fragments.This 使用了我的 mainTabActivity java class
public class MainTabActivity extends AppCompatActivity {
private CustomTabLayout tabLayout;
private ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_simple_tabs);
viewPager = (ViewPager) findViewById(R.id.viewpager);
setupViewPager(viewPager);
tabLayout = (CustomTabLayout)findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
findViewById(R.id.tab_ticket).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(MainTabActivity.this, TicketsActivity.class);
startActivity(intent);
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
}
});
findViewById(R.id.tab_main).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.e("BottomClickAction","BottomClickAction");
}
});
}
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(new OneWayFragment(), "ONE");
adapter.addFragment(new TwoFragment(), "ROUND");
viewPager.setAdapter(adapter);
}
class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
} 我也有自定义底部 bar.Now 我试图解释我的 problem.In 我的片段包含一些元素,例如微调器,文本视图或 etc.My 问题 is:How 我从当前片段中获取信息时我点击底栏?我的意思是,spinner 的数据信息,Textview 的 gettext 等等。 我该如何解决我的问题?是否可以不使用静态变量?
您可以在 viewpager 中找到片段 OneWayFragment
,如下所示:
public OneWayFragment getOneWayFragment() {
return (OneWayFragment) getSupportFragmentManager().findFragmentByTag(
"android:switcher:" + R.id.viewPager + ":" + 0);
}
public TwoFragment getTwoFragment() {
return (TwoFragment) getSupportFragmentManager().findFragmentByTag(
"android:switcher:" + R.id.viewPager + ":" + 1);
}
您可以从 OneWayFragment
或 TwoFragment
访问 public 方法获取您想要的数据。
例如,从 OneWayFragment
:
public String getData() {
return tv.getText().toString();
}
并在您的 MainTabActivity
中。例如,您单击按钮的 ID 为 tab_main
,您从 OneWayFragment
.
findViewById(R.id.tab_main).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.e("BottomClickAction","BottomClickAction");
OneWayFragment fragment = getOneWayFragment();
if(fragment != null) {
String data = fragment.getData();
}
}
});
在片段中创建自己的方法,如 getFragmentData()。随时访问此方法。你的情况:
1) 引用你的片段 _oneWayaFrgament= 新的 OneWayFragment() adapter.addFragment(_oneWayaFrgament, "ONE");
2) 调用 _oneWayaFrgament.getFragmentData()
类似地在 TwoFragment 上应用您的条件逻辑。
请通过识别当前片段调用 getFragmentData()。
是的,您可以在您的片段中包含 public 个变量和方法,然后您可以设置和获取您的变量或从您的 activity 中调用您的方法。 例如在你的片段中:
public String myString;
public Button someButton;
或
public void fillMyTextView(){//some codes};
并且在您的 activity 中,您可以像这样调用这些方法或访问您的视图:
myFragment.fillMyTextView("hello");
myFragment.someButton.setText("my btn");
我建议您将单例创建为状态对象(根据需要作为视图的状态,您可以使用整数或短字节或字节作为状态标记内存)随心所欲地使用,并在完成使用后取消.通过这种方式,您可以在任何时间点访问任何片段或 activity 中的任何数据。您也可以使用其他实现,例如接口类型,因为设计和架构 way.But 取决于状态的重要性。