2015-10-06 47 views
0

我有一個活動,我有一個textView,Framelayout(有片段)和一個按鈕。同時點擊按鈕,我正在更改framelayout中的碎片和textView中的文本(根據碎片)。在按下手機的後退按鈕時,我不知何故能夠獲得具有onBackpressed功能的前一個片段,但無法獲得textView上的先前值。怎麼做。如何在恢復碎片的同時更改textView的值?

public class Quetionare extends AppCompatActivity { 

Toolbar toolbar; 
TextView tv; 
Fragment fr; 
Button next; 
intro into; 
SelectCar selectCar; 



@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_quetionare); 
    initToolbar(); 
    next=(Button)findViewById(R.id.button2); 
    tv = (TextView)findViewById(R.id.textView5); 
    fr = new intro(); 

    FragmentManager fm = getFragmentManager(); 
    FragmentTransaction fragmentTransaction = fm.beginTransaction(); 
    fragmentTransaction.replace(R.id.container, fr); 
    fragmentTransaction.commit(); 
} 

private void initToolbar() 
{ 
    toolbar = (Toolbar)findViewById(R.id.app_bar); 
    setSupportActionBar(toolbar); 
    getSupportActionBar().setDisplayShowTitleEnabled(false); 
    final ActionBar actionBar = getSupportActionBar(); 
    if (actionBar != null) 
    { 
     actionBar.setDisplayHomeAsUpEnabled(true); 
    } 
    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); 
    getWindow().setStatusBarColor(Color.TRANSPARENT); 
} 


public void selectFrag(View view) 
{ 

    if(view==findViewById(R.id.button2)) 
    { 
     fr = new SelectCar(); 
     next.setVisibility(View.GONE); 
     tv.setText("Select Your car model and Plan"); 
    } 
    else 
    { 
     fr = new Checkbox(); 
     tv.setText("Make Your Plan"); 
    } 

    FragmentManager fm = getFragmentManager(); 
    FragmentTransaction fragmentTransaction = fm.beginTransaction(); 
    fragmentTransaction.replace(R.id.container, fr); 
    fragmentTransaction.addToBackStack(null); 
    fragmentTransaction.commit(); 

} 



@Override 
public void onBackPressed() 
{ 
    if(getFragmentManager().getBackStackEntryCount() > 0) { 
     getFragmentManager().popBackStack(); 
     if (fr == into) 
     { 
      next.setVisibility(View.VISIBLE); 
     } 

     else 
     { 
      next.setVisibility(View.GONE); 
     } 

    } 
    else 
     super.onBackPressed(); 

} 





@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_quetionare, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) 
    { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

}

+0

在您的活動中使用OnBackStackChangedListener提交您的片段,以便您知道片段何時從後臺堆棧彈出,以便對用戶當前可見的片段採取必要措施。 –

回答

0

你將不得不轉移到你的第二個片段到現場時,保存在TextView的值,然後使用該值,當您導航回到調用setText

+0

你能舉個例子嗎? –