ダイアログフラグメントの後に Textview の値を更新しようとすると、正しい値が得られますが、前の値が長い場合、古いビューがまだバックグラウンドで表示されます (醜い)。
現在のフラグメントに対してonResume()を呼び出してみましたが、改善はありませんでした。
ダイアログを呼び出すだけで、リスナーonFinishEditDialog()が呼び出されると、テキストを設定するだけです
別のアプリを開いて戻ってきた場合、それは完璧です(古いものはなくなりました)どうすればこれが可能になりますか?
xml レイアウトで:
<TextView
android:id="@+id/txttotalcho"
style="@style/importantTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="40dp"
android:text="33 cho"
android:textSize="64dp" />
MainActivity で:
@Override
public void onGoToPage(int pageNumber,boolean verso, Pasto p,ArrayList<CiboSelezionato> cibiSelezionati,String extra) {
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
Fragment firstDetail =
(Fragment)fm.findFragmentByTag(SECOND_DETAIL_FRAGMENT_TAG);
ft.remove(firstDetail);
ft.commit();
FragmentTransaction ft2 = fm.beginTransaction();
switch (pageNumber){
case Constants.P_SCELTA_PASTO:{
WizardPasti10 secondDetail = WizardPasti10.getInstance(this);
ft2.replace(R.id.anchor_layout,secondDetail,SECOND_DETAIL_FRAGMENT_TAG);
break;
}
case Constants.P_TOTAL_CHO:{
WizardPastiTotalCho secondDetail = WizardPastiTotalCho.getInstance(this);
ft2.replace(R.id.anchor_layout,secondDetail,SECOND_DETAIL_FRAGMENT_TAG);
break;
}
ft2.commit();
View v1,v2;
v1=(View)findViewById(R.id.anchor_left);
v2=(View)findViewById(R.id.anchor_layout);
v1.setVisibility(View.GONE);
v2.setVisibility(View.VISIBLE);
v2.setBackgroundColor(getResources().getColor(R.color.white));
}
フラグメント WizardPastiTotalCho:
private TextView txtTotalCho;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
View firstView = inflater.inflate(R.layout.wizardpastitotalcho, container, false);
txtTotalCho = (TextView)firstView.findViewById(R.id.txttotalcho);
txtTotalCho.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View button) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
DialogFragment newFragment = new TastierinoDialogFragment(WizardPastiTotalCho.this,Constants.CARBOIDRATI,0);
newFragment.show(ft, "totalchoDialog");
}
});
}
@Override
public void onFinishEditDialog(int dialogType, String inputText) {
//called when i close the dialogFragment
txtTotalCho.setText(inputText+" cho");
txtTotalCho.setBackgroundColor(Color.YELLOW);//just to see the difference
try {
totalCho=Float.parseFloat(inputText);
tmpPasto.setCarboidrati(totalCho);
} catch (NumberFormatException e) {
e.printStackTrace();
}
}