fragment로 탭을 3개 구성하였고 첫번째 탭에서 다른 탭이나 기능(검색, 설정) 화면으로 이동 후 다시 첫번째 탭으로 이동 시, 첫번째 탭에서 마지막으로 보고 있던 화면이 유지되게 하고 싶은데 imageview와 textview에 설정한 초기값이 보여집니다.
fragment 첫번째 화면에 해당하는 아래 코드와 MainActivity 코드 상 문제가 되는 부분이 어디인지 알려주시면 감사 드리겠습니다!(반복되는 긴 부분은 ★ 문자로 자체 생략했습니다)
//fragement1
public class Fragment1 extends Fragment {
★변수 선언
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment1, container, false);
imageView = (ImageView) rootView.findViewById(R.id.imageView);
imageView2 = (ImageView) rootView.findViewById(R.id.imageView2);
imageView3 = (ImageView) rootView.findViewById(R.id.imageView3);
textView2 = (TextView) rootView.findViewById(R.id.textView2);
textView3 = (TextView) rootView.findViewById(R.id.textView3);
textView4 = (TextView) rootView.findViewById(R.id.textView4);
button = (Button) rootView.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View V) {
int nowValue = progressBar.getProgress();
int maxValue = progressBar.getMax();
if(maxValue == nowValue) {
nowValue = 0;
} else {
progressBar.setVisibility(View.VISIBLE);
nowValue = nowValue + 1;
textView.setText("진행율 : " + nowValue + "/38명");
★동작 선언(버튼 클릭 시 마다 imageview, textview 내용이 순차적으로 변경)
if(nowValue == 0) {
Resources res = getResources();
progressBar.setVisibility(View.INVISIBLE);
bitmap1 = (BitmapDrawable) res.getDrawable(R.drawable.check);
imageView.setImageDrawable(bitmap1);
textView.setText("확인 완료!");
textView.setTextSize(30);
textView2.setText(null);
textView3.setText(null);
textView4.setText(null);
imageView2.setVisibility(View.INVISIBLE);
imageView3.setVisibility(View.INVISIBLE);
button.setVisibility(View.INVISIBLE);
}
progressBar.setProgress(nowValue);
button.setText("다음");
}
});
progressBar = (ProgressBar) rootView.findViewById(R.id.progressBar);
textView = (TextView) rootView.findViewById(R.id.textView);
return rootView;
}
}
//mainactivity
public class MainActivity extends AppCompatActivity {
Fragment1 fragment1;
Fragment2 fragment2;
Fragment3 fragment3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayShowTitleEnabled(true);
fragment1 = new Fragment1();
fragment2 = new Fragment2();
fragment3 = new Fragment3();
getSupportFragmentManager().beginTransaction().replace(R.id.container, fragment1).commit();
TabLayout tabs = (TabLayout) findViewById(R.id.tabs);
tabs.addTab(tabs.newTab().setIcon(R.drawable.people2));
tabs.addTab(tabs.newTab().setIcon(R.drawable.list2));
tabs.addTab(tabs.newTab().setIcon(R.drawable.heart));
tabs.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_BUTTON_PRESS) {
return true;
} else if (event.getAction() == MotionEvent.ACTION_BUTTON_RELEASE) {
return false;
}
return true;
}
});
tabs.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
int position = tab.getPosition();
Log.d("MainActivity", "선택된 탭 : " + position);
Fragment selected = null;
if (position == 0) {
selected = fragment1;
} else if (position == 1) {
selected = fragment2;
} else if (position == 2) {
selected = fragment3;
}
getSupportFragmentManager().beginTransaction().replace(R.id.container, selected).commit();
}
@Override
public void onTabUnselected(TabLayout.Tab tab) { }
@Override
public void onTabReselected(TabLayout.Tab tab) { }
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int curId = item.getItemId();
switch(curId) {
case R.id.menu_search:
Intent myIntent = new Intent(getApplicationContext(), SearchActivity.class);
startActivity(myIntent);
break;
case R.id.menu_setting:
Toast.makeText(this, "설정할 기능이 없습니다.", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
}