【问题标题】:Refresh the display of an activity when it is visible again再次可见时刷新活动的显示
【发布时间】:2015-09-28 08:41:51
【问题描述】:

我有两个活动(TextActivity.javaGrammarActivity.java),其中一个片段(ChoixLangue.java)是一个单选组,有四个按钮可以选择翻译语言。 GrammarActivity 的父级是 TextActivity。 我可以在TextActivityGrammarActivity 上选择我想要的语言。我也可以在任何活动上改变它。 但是如果我在TextActivity 上选择一种语言,然后转到GrammarActivity 并更改语言,然后kill GrammarActivity,这会将我带回TextActivity,它显示错误的收音机选中按钮 - 可能是因为 TextActivity 的显示未刷新。 如何修复这个错误?这是TextActivity中的部分代码`

public class TextActivity extends AppCompatActivity {
public ImageButton monImageBouton;
public Button monBouton;
public TextView monTextView;
public static RadioButton monBoutonRadio;
public static String langueChoisie = "francais";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_text);

    // une des solutions pour rendre la zone trado scrollable
    TextView myXmlContent = (TextView)findViewById(R.id.zone_trado_scrollable);
    myXmlContent.setMovementMethod(new ScrollingMovementMethod());

    verifLangue();
    playText();
    test("button8"); // indique la langue choisie
}


public void verifLangue(){
    if(langueChoisie == "english"){
        monBoutonRadio = (RadioButton)findViewById(R.id.english);
        monBoutonRadio.setChecked(true);
    }
    else if(langueChoisie == "espanol"){
        monBoutonRadio = (RadioButton)findViewById(R.id.espanol);
        monBoutonRadio.setChecked(true);
    }
    else if(langueChoisie == "chinois"){
        monBoutonRadio = (RadioButton)findViewById(R.id.chinois);
        monBoutonRadio.setChecked(true);
    }
    else{
        monBoutonRadio = (RadioButton)findViewById(R.id.francais);
        monBoutonRadio.setChecked(true);
    }
}

public void onRadioButtonClicked(View view) {

    boolean checked = ((RadioButton) view).isChecked();

    // Check which radio button was clicked
    switch(view.getId()) {
        case R.id.english:
            if (checked)
                langueChoisie = "english";
            break;
        case R.id.francais:
            if (checked)
                langueChoisie = "francais"; // checked et définie a priori
            break;
        case R.id.espanol:
            if (checked)
                langueChoisie = "espanol";
            break;
        case R.id.chinois:
            if (checked)
                langueChoisie = "chinois";
            break;
    }
}`

【问题讨论】:

    标签: android refresh


    【解决方案1】:

    我不确定我是否完全理解您的问题,但最好的选择是将事件处理程序用于单选按钮,它将获取选定的值并将其存储为两个类(语法和文本)。 (我假设您希望您为 Grammer 活动所做的选择也应保留用于 Text 活动。)

    【讨论】:

    • 实际上,选择的语言的值被两个活动正确记录和共享。它只是所选语言的“显示”,当我返回 TextActivity 时,它没有更新(但翻译确实适用于所选的新语言)。
    • 那你有没有ItemListeners?一个代码 sn-p 会很好
    • 你可以编辑你的问题或者在`code`标签之间写代码
    猜你喜欢
    • 1970-01-01
    • 2019-06-04
    • 1970-01-01
    • 2018-12-30
    • 2012-11-23
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多