Ситуация: Я создаю приложение, которое имеет 3 фрагмента, которые пользователь может провести между использованием viewpager. На каждом фрагменте у них есть кнопка переключения, которая отображает/скрывает ответ.Сброс togglebutton на viewpager swipe
Вопрос: Когда вы нажимаете кнопку переключения на первом фрагменте, она включается. Затем, когда вы переходите ко второму фрагменту и переходите к первому, кнопка переключения по-прежнему проверяется на ON (она все еще показывает ответ). Как я могу это сделать, когда вы прокручиваете вперед, а затем назад, чтобы сбросить состояние кнопок.
Я думал, что это будет что-то простое, как положить это в фрагменте
public void onResume(){
super.onResume();
showHideButton.setChecked(false);
}
Это не работало. Я также посмотрел на кучу других симуляторов сообщений, но ничего не работало. Я прошу прощения, я не смогу проверить здесь, чтобы ответить на вопросы до сегодняшнего вечера, потому что я на работе, и я просто сделал короткий перерыв, чтобы задать этот вопрос.
EDIT:
активность:
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.Menu;
public class Activity10_1 extends FragmentActivity {
Fragment10_1 frag = new Fragment10_1();
ViewPager pager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Set up pager and fragment manager.
pager = (ViewPager) findViewById(R.id.pager);
FragmentManager fm = getSupportFragmentManager();
MyFragmentPageAdapter pagerAdapter = new MyFragmentPageAdapter(fm);
pager.setAdapter(pagerAdapter);
pageChange();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity10_1, menu);
return true;
}
public void pageChange(){
pager.setOnPageChangeListener(new OnPageChangeListener(){
@Override
public void onPageScrollStateChanged(int position) {}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {}
@Override
public void onPageSelected(int position) {
switch(position){
case 0:
frag.getShowHideButton().setChecked(false);
break;
case 1:
frag.getShowHideButton().setChecked(false);
break;
case 2:
frag.getShowHideButton().setChecked(false);
break;
default:
frag.getShowHideButton().setChecked(false);
}
}
});
}
}
Пейджер адаптер:
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
public class MyFragmentPageAdapter extends FragmentPagerAdapter {
DataHolder10_1 dh = new DataHolder10_1();
final int PAGE_COUNT = 3;
public MyFragmentPageAdapter(FragmentManager fm) {
super(fm);
// TODO Auto-generated constructor stub
}
// method will be involked when a page is requested to create
@Override
public Fragment getItem(int arg0){
//Create bundle.
Bundle data = new Bundle();
//Instantiate fragment.
Fragment10_1 myFragment = new Fragment10_1();
//Add data to bundle.
data.putInt("pageNumberData", arg0 + 1);
data.putString("questionData", dh.getQuestions()[arg0]);
data.putString("answerData", dh.getAnswers()[arg0]);
//Send bundle to fragment.
myFragment.setArguments(data);
return myFragment;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return PAGE_COUNT;
}
}
Фрагмент:
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CompoundButton;
import android.widget.TextView;
import android.widget.ToggleButton;
public class Fragment10_1 extends Fragment {
private int pageNumber;
private String question;
private String answer;
//declare TextViews.
private TextView pageNumberTextView;
private TextView questionTextView;
private TextView answerTextView;
private String origMessage;// saves message of answer for switching between show and hide.
//colors for switching between show and hide.
private int showColor;
private int hideColor;
//declare toggle button.
private ToggleButton showHideButton;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//Get bundle data.
Bundle data = getArguments();
// Get integer data of the key current page from the bundle
pageNumber = data.getInt("pageNumberData", 0);
question = data.getString("questionData");
answer = data.getString("answerData");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState){
View view = inflater.inflate(R.layout.fragment10_1, container, false);
pageNumberTextView = (TextView)view.findViewById(R.id.pageCount1);
questionTextView = (TextView)view.findViewById(R.id.question1);
answerTextView = (TextView)view.findViewById(R.id.answer1);
showHideButton = (ToggleButton)view.findViewById(R.id.toggleButton1);
showHideButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean on){
if(on){
//change color and text if button is set to show answer.
answerTextView.setTextColor(showColor);
answerTextView.setText(answer);
}else{
//default answer to hidden properties.
answerTextView.setTextColor(hideColor);
answerTextView.setText(origMessage);
}
}
});
//grab colors from text views for switching between show and hide.
showColor = questionTextView.getTextColors().getDefaultColor();
hideColor = answerTextView.getTextColors().getDefaultColor();
//set original message.
origMessage = getString(R.string.answer);
//create Text views and button down here.
pageNumberTextView.setText("Page: " + pageNumber + "/3");
questionTextView.setText(question);
return view;
}
public ToggleButton getShowHideButton(){
return showHideButton;
}
}
Сейчас им пытаются использовать OnPageChangeListener. Приложение подходит отлично, но это вызывает его сбой при прохождении.
Edit 2: arn't виджет создается здесь
private TextView pageNumberTextView;
private TextView questionTextView;
private TextView answerTextView;
private ToggleButton showHideButton;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState){
View view = inflater.inflate(R.layout.fragment10_1, container, false);
pageNumberTextView = (TextView)view.findViewById(R.id.pageCount1);
questionTextView = (TextView)view.findViewById(R.id.question1);
answerTextView = (TextView)view.findViewById(R.id.answer1);
showHideButton = (ToggleButton)view.findViewById(R.id.toggleButton1);
Вы делаете какой-либо прогресс? –
К сожалению, у меня нет:/Я поднял пример, но они внедрили это в действие. Моя кнопка находится на фрагментах, поэтому я не уверен, как я собираюсь сбросить ее из активности. Теперь, если честно, у меня не было много времени, чтобы действительно изучить его. Любая помощь приветствуется, я сообщу, если я это выясню. – Snakeyesz
Итак, вы говорите, что onPageChangeListener не будет работать для вас? –