すべてのページに「タイトル」を保存したオンラインデータベースがあります。 Async Taskを使用してサーバーとログステートメントからデータをダウンロードしています。すべてのタイトル文字列が正しく取得されているのがわかりました。 FragmentStatePagerAdapterを使用してMainActivityでページを作成する。 ページを正常に作成できますが、すべてのページに同じデータがあります。すべてのフラグメントに同じデータがページを使用して表示されています。ビューアを使用してページを作成します。
私のMainActivity.java:ページャアダプタもあります。
public class MainActivity extends AppCompatActivity {
ViewPager viewPager=null;
int numFrag1;
String title = "", getTitle= "";
public class TitleDownload extends AsyncTask<Void,Void,String>{
@Override
protected String doInBackground(Void... params) {
CloudQuery query = new CloudQuery("CollegeFeeds");
query.orderByAsc("updatedAt");
query.include("imageTitle");
try {
query.count(new CloudIntegerCallback() {
@Override
public void done(Integer integer, CloudException e) throws CloudException {
if(integer != null){
//int numFrag = integer;
noofFrag(integer);
//Log.i("no of fragments", String.valueOf(integer));
System.out.println("in background"+ integer);
}
}
});
} catch (CloudException e) {
e.printStackTrace();
}
try {
query.find(new CloudObjectArrayCallback() {
@Override
public void done(CloudObject[] cloudObjects, CloudException e) throws CloudException {
if(cloudObjects != null){
//Log.i("no of fragments", String.valueOf(cloudObjects.length));
for (int i=0; i < cloudObjects.length; i++){
// Log.i("no of fragments", String.valueOf(cloudObjects.length));
title = cloudObjects[i].get("imageTitle").toString();
titleName(title);
Log.i("title", title);
}
}
if(e != null){
e.printStackTrace();
}
}
});
} catch (CloudException e) {
e.printStackTrace();
}
return title ;
}
}
public void noofFrag(int data){
numFrag1 = data;
}
public void titleName(String titleData){
getTitle = titleData;
System.out.println("method title" + getTitle);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CloudApp.init("qrhjtmypohec", "6e22fd4d-eef9-49b5-87a9-fba0f35075f9");
new TitleDownload().execute();
viewPager = (ViewPager) findViewById(R.id.pager);
FragmentManager fragmentManager = getSupportFragmentManager();
viewPager.setAdapter(new MyAdapter(fragmentManager));
//viewPager.setPageTransformer(true,);
//actionBar.setDisplayHomeAsUpEnabled(true);
}
class MyAdapter extends FragmentStatePagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public Fragment getItem(int position) {
AttendanceResultFeed fragment = null;
for (int i=0; i<4; i++){
if(position == i){
fragment = new AttendanceResultFeed(position);
fragment.getTag();
//System.out.println("fragment tag" + fragment.getTag());
//fragment.getNumber(i);
Bundle bundle = new Bundle();
bundle.putInt("number", i);
bundle.putString("title", getTitle);
fragment.setArguments(bundle);
}
//return fragment;
new MyAdapter(getSupportFragmentManager()).notifyDataSetChanged();
}
return fragment;
}
@Override
public int getCount() {
// Log.d("info", "get count called");
//numFrag1--;
//Log.i("no of method(numFrag1) ", String.valueOf(numFrag1));
new MyAdapter(getSupportFragmentManager()).notifyDataSetChanged();
return 4;
}
@Override
public CharSequence getPageTitle(int position) {
if (position == 0){
return "Attendance and Result";
}
if (position == 1){
return "College Feeds";
}
if (position == 2){
return "Branch Feeds";
}
return super.getPageTitle(position);
}
}
}
Fragment.java
実際public class AttendanceResultFeed extends Fragment {
TextView textView, titleText;
int number;
String text= "";
public AttendanceResultFeed(int position) {
Log.i("position", String.valueOf(position));
}
public void getNumber (int data){
number = data;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(savedInstanceState == null){
// Log.d("info", "in attandec frag on create First time");
}else {
// Log.d("info", "in attandec frag on create subsequent time");
}
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.attendance_results_frag,container,false);
textView = (TextView) rootView.findViewById(R.id.textView);
titleText = (TextView)rootView.findViewById(R.id.titleText);
number = getArguments().getInt("number",0);
text = getArguments().getString("title");
Log.d("info", String.valueOf(number));
String num = String.valueOf(number);
titleText.setText(text);
textView.setText(num);
return rootView;
}
私はあなたのソリューションを試みたが、私は、javaを取得しています。 lang.IndexOutOfBoundsException:無効なインデックス0、サイズが0 –
あなたは私に次に何をすることをお勧めしますか? –
@KrRakesh前に述べたように、私はあなたのプログラムがどのように動作しているのか分かりません。それは単なる提案であり、その要素はgetTitleに何もないので何もないので、あなたの問題について – Pooya