![](/img/trans.png)
[英]Android - passing string data from Fragment to Activity using TabLayout, ViewPager
[英]set tabLayout title from json data android
我想將 json 數據標題解析到我的 tabLayout 中。 我有兩個片段,現在我只想從我的 json 數據中獲取標題。 目前我在MainActivity.java
文件中設置了手動選項卡標題。 我如何將 json 數據解析到我的 tabLayout 中?
這是我的 MainActivity.java 代碼:
public class MainActivity extends AppCompatActivity implements Home.OnFragmentInteractionListener,
Politics.OnFragmentInteractionListener {
TabLayout tabLayout;
ViewPager viewPager;
ViewPagerAdapter viewPagerAdapter;
Toolbar toolbar;
Dialog Developer;
TextView txtclose;
TextView facebook;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
toolbar.setTitleTextColor(0xFF0F0E37);
tabLayout = (TabLayout)findViewById(R.id.tabLayout);
viewPager = (ViewPager)findViewById(R.id.viewPager);
viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
viewPagerAdapter.addFragments(new Home(),"Bangla");
viewPagerAdapter.addFragments(new Politics(),"Politics");
viewPager.setAdapter(viewPagerAdapter);
tabLayout.setupWithViewPager(viewPager);
Developer = new Dialog(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.home, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.about:
Developer.setContentView(R.layout.about);
txtclose =(TextView) Developer.findViewById(R.id.txtclose);
facebook = (TextView) Developer.findViewById(R.id.facebook);
facebook.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TextView facebook = (TextView) findViewById(R.id.facebook);
Intent openFB = new Intent(Intent.ACTION_VIEW,
Uri.parse("https://facebook.com/test/"));
startActivity(openFB);
}
});
txtclose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Developer.dismiss();
}
});
Developer.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
Developer.show();
break;
case R.id.share:
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
String shareTitile ="test";
String shareLink = "https://play.google.com/store/apps/details?id=test";
intent.putExtra(Intent.EXTRA_SUBJECT, shareTitile);
intent.putExtra(Intent.EXTRA_TEXT, shareLink);
startActivity(Intent.createChooser(intent, "Share test"));
break;
default:
}
return super.onOptionsItemSelected(item);
}
@Override
public void onFragmentInteraction(Uri uri) {
}
}
這是我的 ViewPagerAdapter.java 代碼:
public class ViewPagerAdapter extends FragmentPagerAdapter {
ArrayList<Fragment> fragments = (new ArrayList<>());
ArrayList<String> tabTitles = (new ArrayList<>());
public void addFragments(Fragment fragments, String titles){
this.fragments.add(fragments);
this.tabTitles.add(titles);
}
public ViewPagerAdapter(FragmentManager fm){
super(fm);
}
@Override
public Fragment getItem(int possition) {
return fragments.get(possition);
}
@Override
public int getCount() {
return fragments.size();
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return tabTitles.get(position);
}
}
配偶,我的json字符串是名字。 我想將該名稱解析為viewPagerAdapter.addFragments(new Home(),"Bangla");
和viewPagerAdapter.addFragments(new Politics(),"Politics");
. 在這里,我想替換 Bangla 以檢索 json 數據name
並從name
自動替換 Politics。 我想保留我的 2 個不同的fragments
,因為 - 我會將不同的數據解析為兩個片段。
我正在從 url 解析 josn,就像https://website.com/api/details.php
這是我的 json 響應:
[
{"cid":"1","name":"Bangle"},
{"cid":"2","name":"Politics"},
{"cid":"3","name":"International"}
]
如果您不明白我的問題,請告訴我。
注意:為了更好地理解,您可以編輯我的代碼並發布您的答案!
提前致謝。
public class MainActivity extends AppCompatActivity implements Home.OnFragmentInteractionListener,
Politics.OnFragmentInteractionListener {
TabLayout tabLayout;
ViewPager viewPager;
ViewPagerAdapter viewPagerAdapter;
Toolbar toolbar;
Dialog Developer;
TextView txtclose;
TextView facebook;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
toolbar.setTitleTextColor(0xFF0F0E37);
String jsonStr = ""; // this variable should contain the JSON response from url, assing json response to this variable.
JSONArray jsonarray = new JSONArray(jsonStr);
for (int i = 0; i < jsonarray.length(); i++) {
JSONObject jsonobject = jsonarray.getJSONObject(i);
String name = jsonobject.getString("name");
// If you have only two fragments then simply take a count variable other wise you can save this "name" in string array.
if(i==0){
viewPagerAdapter.addFragments(new Home(),name);
}else if(i == 1){
viewPagerAdapter.addFragments(new Politics(),name);
}
}
tabLayout = (TabLayout)findViewById(R.id.tabLayout);
viewPager = (ViewPager)findViewById(R.id.viewPager);
viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
viewPagerAdapter.addFragments(new Home(),"Bangla");
viewPagerAdapter.addFragments(new Politics(),"Politics");
viewPager.setAdapter(viewPagerAdapter);
tabLayout.setupWithViewPager(viewPager);
Developer = new Dialog(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.home, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.about:
Developer.setContentView(R.layout.about);
txtclose =(TextView) Developer.findViewById(R.id.txtclose);
facebook = (TextView) Developer.findViewById(R.id.facebook);
facebook.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TextView facebook = (TextView) findViewById(R.id.facebook);
Intent openFB = new Intent(Intent.ACTION_VIEW,
Uri.parse("https://facebook.com/test/"));
startActivity(openFB);
}
});
txtclose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Developer.dismiss();
}
});
Developer.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
Developer.show();
break;
case R.id.share:
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
String shareTitile ="test";
String shareLink = "https://play.google.com/store/apps/details?id=test";
intent.putExtra(Intent.EXTRA_SUBJECT, shareTitile);
intent.putExtra(Intent.EXTRA_TEXT, shareLink);
startActivity(Intent.createChooser(intent, "Share test"));
break;
default:
}
return super.onOptionsItemSelected(item);
}
@Override
public void onFragmentInteraction(Uri uri) {
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.