私のプログラムでは、を使ってtabs
を実装しました。私はをTab2の中に入れました。私はTab2
のonCreateView
()のfragment
Tab2
のすべてのメインコードを書きたいので、Tab2
にスワイプするたびに、この同じコードが実行されます。 onCreateView
は()私はTAB2にスワイプするたびに呼び出されたかどうかをテストするために、私はTab2
の)(onCreateView
に次の文を書いた:フラグメントクラスのonCreateView()をタブにスワイプするたびに呼び出す方法を教えてください。
text.setText("default");
私はTab2-をアプリやスワイプを実行したときに今、私は「デフォルトを参照してください'書かれた。今、私がこのテキストを手動で変更すると、Tab1にスワイプしてTab2に戻ります。この同じテキストが書き込まれたままです。これは明らかに私が2回目にTab2にスワイプしたときにonCreateView
()が再度呼び出されなかったことを意味しますか?これをどうやって解決するのですか?
Tab2.java
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class Tab2 extends Fragment
{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
setRetainInstance(false);
final View rootView;
rootView= inflater.inflate(R.layout.fragment_tab2, container, false);
text.setText("default");
return rootView;
}
}
MainActivity.java
package com.example.nirvan.diary30;
import android.support.design.widget.TabLayout;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v7.widget.Toolbar;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity
{
public static int itemPosition;
private Toolbar toolbar;
private TabLayout tabLayout;
private ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(false);
viewPager = (ViewPager) findViewById(R.id.viewpager);
setupViewPager(viewPager);
tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
viewPager.setOffscreenPageLimit(0);
}
private void setupViewPager(ViewPager viewPager)
{
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(new Tab1(), "ONE");
adapter.addFragment(new Tab2(), "TWO");
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);
}
}
}
あなたはonCreateViewで何をしたいですか?多分、これは他の方法で達成できますか? –
'setUserVisibleHint'メソッドを参照してください –
tab1では、私は件名のリストを用意しています。それぞれをクリックしてからTab2にスワイプすると、新しいページがEditTextで読み込まれます。私は、ユーザが入力したテキストを保存するためにTab2にSAVEボタンを持つ予定です。したがって、ユーザーがTab1で1つの件名を選択し、Tab2に行きテキストを書き込んでTab1に戻って別の件名を選択すると、Tab2にスワイプすると空のEditTextが表示されます。 – Nirvan