Android:为什么后续代码阻止TextView的.setText()工作

安诺德

更新:致电后,我发现该代码updatePercentage阻止.setText正常工作。我已经更新了以下代码,以显示calcAndDisplayResults来自button_Convert的调用以及的代码calcAndDisplayResults当我删除调用calcAndDisplayResults.setText前此调用正常工作。为什么以后的代码会阻止以前的代码工作?

我试图更新TextView对象的文本,以.setText()在content_main布局(包括在activity_main布局中)上显示更新的完成百分比值。我通过我编写的名为private的方法更新文本,该方法updatePercentage按下各种按钮onClick方法中调用MainActivity当从内部的某些位置而不是其他位置调用updatePercentage时.setText工程(即,更新的文本TextViewonClick具体来说,它在输入onClick方法时起作用,在单击button_3时起作用,但是在单击button_Convert时不起作用(即,不更新的文本TextView)。button_Convert切换案例中的其他方法(在之后调用updatePercentage)可以正常工作。

我搜索了StackOverflow数据库,发现其他人有setText疑问,但似乎都没有一个能解决我遇到的问题。我的开发环境是Android Studio(2.1.2),具有所有已知的相关更新。我在使用AVD设备Galaxy Nexus API 23时遇到问题。我是Android / Java的新手,非常感谢您的帮助。

这是我的代码的相关部分。

MainActivity.java:

...
import android.widget.TextView;
...

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
...
private TextView percentComplete;
...

@Override
protected void onCreate(Bundle savedInstanceState) {
    final String METHOD = "Method: onCreate";
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ...
    percentComplete = (TextView) findViewById(R.id.textView_PercentCompleteValue);
    ...

}

...

@Override
public void onClick(View view) {
    final String METHOD = "Method: onClick";

    currentValue = valueToConvert.getText().toString();

    int progressUpdate = 0;
    updatePercentage(progressUpdate);  //This one works...text updated to 0%

    ArrayList<String> goodWords = new ArrayList<>();

    Results_Adapter resultsAdapter = new Results_Adapter(this, goodWords);
    listResults.setAdapter(resultsAdapter);

    switch (view.getId()) {

        ...

        case R.id.button_3:
            valueToConvert.setText(String.format(Locale.US, "%s%s", currentValue, "3"));

            progressUpdate = 3;
            updatePercentage(progressUpdate);  //This one works...text updated to 3%

            break;

        ...

        case R.id.button_Convert:
            progressUpdate = 20;
            updatePercentage(progressUpdate);  //This one doesn't work...text stays 0% or 3%, depending if I've clicked button_3 first

            calcAndDisplayResults();  //If I remove the call to this method, the code for updatePercentage works ????

            break;
    }
}

private void calcAndDisplayResults (){
    final String METHOD = "Method: calcAndDisplayResults";
    ArrayList<String> goodWords = new ArrayList<>();

    currentValue = valueToConvert.getText().toString();
    goodWords = convertNumbersToWords(currentValue);
    if (goodWords.size() == 0) {
        goodWords.add("<No equivalent words!>");
    }
    Results_Adapter resultsAdapter = new Results_Adapter(this, goodWords);
    listResults.setAdapter(resultsAdapter);
}

private void updatePercentage (int newPercentage){
    final String METHOD = "Method: updatePercentage";
    Log.v(LOG_CLASS, String.format(Locale.US, "%s; newPercentage: %d%%", METHOD, newPercentage));
    this.percentComplete.setText(String.format(Locale.US, "%d%%", newPercentage));
}

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    android:background="@color/md_grey_200"
    tools:context="com.psmithe.combowords.MainActivity">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay"/>

    </android.support.design.widget.AppBarLayout>

    <include layout="@layout/content_main"/>

</android.support.design.widget.CoordinatorLayout>

content_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.psmithe.combowords.MainActivity"
    tools:showIn="@layout/activity_main"
    >

    <TextView
        android:id="@+id/textView_CodeToCovert"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="10dp"
        android:layout_marginEnd="50dp"
        android:layout_marginLeft="50dp"
        android:layout_marginRight="50dp"
        android:layout_marginStart="50dp"
        android:background="@drawable/textview_border"
        android:textAlignment="center"
        android:textSize="24sp"/>

    <GridLayout
        android:id="@+id/gridLayout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/textView_CodeToCovert"
        android:layout_centerHorizontal="true">

        <Button
            android:id="@+id/button_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="0"
            android:layout_gravity="center"
            android:layout_row="0"
            android:backgroundTint="@color/colorNumberKeys"
            android:clickable="true"
            android:gravity="center_vertical|center_horizontal"
            android:maxWidth="120dp"
            android:minHeight="50dp"
            android:minWidth="90dp"
            android:onClick="onClick"
            android:text="1"
            android:textSize="12sp"/>

        <Button
            android:id="@+id/button_2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="1"
            android:layout_gravity="center"
            android:layout_row="0"
            android:backgroundTint="@color/colorNumberKeys"
            android:clickable="true"
            android:maxWidth="120dp"
            android:minHeight="50dp"
            android:minWidth="90dp"
            android:onClick="onClick"
            android:text="2\n(A B C)"
            android:textSize="12sp"/>

        <Button
            android:id="@+id/button_3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="2"
            android:layout_gravity="center"
            android:layout_row="0"
            android:backgroundTint="@color/colorNumberKeys"
            android:clickable="true"
            android:maxWidth="120dp"
            android:minHeight="50dp"
            android:minWidth="90dp"
            android:onClick="onClick"
            android:text="3\n(D E F)"
            android:textSize="12sp"/>

        ...

        <Button
            android:id="@+id/button_Convert"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_column="0"
            android:layout_columnSpan="100"
            android:layout_row="4"
            android:backgroundTint="@color/colorConvertKey"
            android:clickable="true"
            android:onClick="onClick"
            android:text="Convert To Words"
            android:textColor="@color/abc_primary_text_material_dark"/>

    </GridLayout>

    <LinearLayout
        android:id="@+id/linearLayout_percentComplete"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/gridLayout"
        android:layout_centerHorizontal="true"
        android:gravity="center_horizontal"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/textView_percentCompleteLabel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Percent Complete:"/>

        <TextView
            android:id="@+id/textView_PercentCompleteValue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:text=""/>
    </LinearLayout>

    <ListView
        android:id="@+id/listView_EquivalentWords"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/linearLayout_percentComplete"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="10dp"
        android:background="@color/colorListViewBackground"/>

</RelativeLayout>
JM勋爵

setText()似乎被覆盖了。

如果尝试calcAndDisplayResults延迟发布方法,是否看到正确的百分比值闪烁?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

TextView.setText()无法正常工作

来自分类Dev

Android TextView.SetText(int resid)如何工作?

来自分类Dev

.setText(“ text”)在android studio中无法正常工作

来自分类Dev

为什么setText()在TextView的以下代码中不起作用?

来自分类Dev

为什么setText为textView在textView的底部添加文本?

来自分类Dev

TextView.setText(Android)导致崩溃..知道为什么吗?

来自分类Dev

Android中的TextView.setText

来自分类Dev

Xamarin Android片段TextView SetText

来自分类Dev

Android TextView.setText崩溃

来自分类Dev

为什么onActivityResult()被工作线程阻止?

来自分类Dev

NullPointerException on TextView setText

来自分类Dev

textView setText()NullPointerException

来自分类Dev

NullPointerException on TextView setText

来自分类Dev

textView setText()NullPointerException

来自分类Dev

Android在Textview setText上的空指针异常

来自分类Dev

Android | TextView.setText()不起作用

来自分类Dev

Android TextView.setText(“”)停止我的应用

来自分类Dev

setText firebase TimeStamp 到 Android 中的 TextView

来自分类Dev

JavaFX-setText()无法正常工作

来自分类Dev

EditText上的setText无法正常工作

来自分类Dev

JavaFx - setText 不能自动工作

来自分类Dev

setText什么都不做

来自分类Dev

为什么async-std的task :: spawn阻止执行后续代码行?

来自分类Dev

为什么jQuery代码无法正常工作?

来自分类Dev

为什么此代码会工作?

来自分类Dev

为什么此代码无法正常工作

来自分类Dev

为什么此代码无法正常工作?

来自分类Dev

为什么此代码会工作?

来自分类Dev

为什么这行代码不能正常工作?