ViewPagerで4つ画面を並べています。
画面1でボタンを押すことでTextViewの変更ができるのですが、画面3,4にスライドした後にまた画面1に戻ってくると画面1で変更した内容が元に戻ってしまいます。
スライドした後も画面1の変更は保持したいのですがどのようにすれば実装できるでしょうか?ページがスライドされた時に更新し直すみたいな機能があればその方法を教えていただきたいです。
今書いているコードは下記のとおりです。
public class MainSimulation extends AppCompatActivity { int winCount; int defeatedCount; int totalCount; double probability; String winOrDefeated; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_simulation); ViewPager viewPager = (ViewPager) findViewById(R.id.pager); viewPager.setAdapter( new MyFragmentStatePagerAdapter( getSupportFragmentManager())); Intent intent = getIntent(); probability = intent.getDoubleExtra(MainActivity.PROBABILITY, 0); } public void winning(View view) { if (probability > Math.random()){ totalCount++; winCount++; winOrDefeated = "win"; }else { totalCount++; defeatedCount++; winOrDefeated = "defeated"; } setWinning(); } public void setWinning(){ TextView textView_simulation_totalCount = (TextView)findViewById(R.id.textView_simulation_totalCount); TextView textView_simulation_winningCount = (TextView)findViewById(R.id.textView_simulation_winningCount); TextView textView_simulation_defeatedCount = (TextView)findViewById(R.id.textView_simulation_defeatedCount); TextView textView_simulation_winning_percent = (TextView)findViewById(R.id.textView_simulation_winning_percent); textView_simulation_totalCount.setText(String.valueOf(totalCount)); textView_simulation_winningCount.setText(String.valueOf(winCount)); textView_simulation_defeatedCount.setText(String.valueOf(defeatedCount)); textView_simulation_winning_percent.setText(winOrDefeated); } } コード
import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class Fragment0 extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.winning, null); } } コード
import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; public class MyFragmentStatePagerAdapter extends FragmentStatePagerAdapter { public MyFragmentStatePagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int i) { switch(i){ case 0: return new Fragment0(); case 1: return new Fragment1(); case 2: return new Fragment2(); default: return new Fragment3(); } } @Override public int getCount() { return 4; } @Override public CharSequence getPageTitle(int position) { return "Page " + position; } } コード
回答2件
あなたの回答
tips
プレビュー