Android TextView没有更新 - 到目前为止没有任何工作

时间:2016-01-18 17:17:20

标签: android textview updates

有很多关于TextView没有更新的帖子,并且有很多关于如何解决问题的建议/建议。

我认为我已经尝试了大部分(如果不是全部的话)并且还没有解决问题。

一般来说,我的代码如下:

private String RefreshUpdateMsg = "Updating";
TextView txtRefresh;

public void onCreate(Bundle savedInstanceState) {  
   super.onCreate(savedInstanceState);  
   setContentView(R.layout.updateroutesform);  
   myActivity = this;  

   txtRefresh = (TextView) findViewById(R.id.txtRefreshing);  

   Button btnUpdate = (Button) findViewById(R.id.btnUpdate);
   btnUpdate.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            // Launch Alert Dialog and Acquire New Data
            ConfirmUpdate();
        }
    });

   if (IntegrateData.equals("YES")) {
        //txtRefresh = (TextView) findViewById(R.id.txtRefreshing);
        txtRefresh.setVisibility(View.VISIBLE);
        txtRefresh.setText(RefreshUpdateMsg);  // THIS SHOWS FINE

        // Launch Handler to Integrate the NewData
        mHandler.postDelayed(mLaunchIntegration,1000);
    }  
}

第一次通过onCreate()时,“IntegrateData”设置为“NO”,因此GUI等待用户单击btnUpdate并启动Alert Dialog。

警告对话框(如果单击是)将完成()此表单并运行另一个表单。
在完成另一种形式的新数据采集(文本文件)后,它将再次启动此表单,但将IntegrateData'标志'设置为“YES”

这将启动Handler以整合数据 到目前为止,一切正常。

现在,在Handler中,除了读取新文件并将其数据写入我的SQLite数据库表之外,我还尝试更新TextView“txtRefresh”以显示慢速数据集成的状态。

在不同的时间(并非所有顺序如下所示),我尝试了以下各项:

// -----------------------------------------
txtRefresh.setText("New Text");  
txtRefresh.invalidate();   // DID NOT WORK  

// -----------------------------------------
txtRefresh.setText("New Text");  
txtRefresh.postInvalidate();   // DID NOT WORK  

// -----------------------------------------
mActivity.runOnUiThread(new Runnable() {
       @Override
       public void run() {
         ((TextView) txtRefresh).setText("New Text"); // DID NOT WORK
                                }
       });

// -----------------------------------------
myActivity.runOnUiThread(new Runnable() {
  @Override
  public void run() {
     txtRefresh.setText("New Text");  // DID NOT WORK
  }
});


// -----------------------------------------
// -- I even tried launching a new, separate Handler to just update the  
// -- TextView, but it too did not work  

这些单独的方法都没有奏效 要么我做错了,要么我需要不同的方法。

非常感谢任何建议/意见。

由于

1 个答案:

答案 0 :(得分:0)

尝试用此套装替换您的代码。您使用TextView作为String,并且您还重新初始化了文本视图。只要仔细检查你上面已经声明了txtRefresh。

String refreshUpdateMsg = "Updating...";

public void onCreate(Bundle savedInstanceState) {  
   super.onCreate(savedInstanceState);  
   setContentView(R.layout.updateroutesform);   

   txtRefresh = (TextView) findViewById(R.id.txtRefreshing);  
   Button btnUpdate = (Button) findViewById(R.id.btnUpdate);

   btnUpdate.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            // Launch Alert Dialog and Acquire New Data
            ConfirmUpdate();
        }
    });

   if (IntegrateData.equals("YES")) {
        txtRefresh.setVisibility(View.VISIBLE); //removable if you haven't set the visibility to GONE or INVISIBLE in your xml 
        txtRefresh.setText(refreshUpdateMsg);  // THIS SHOWS FINE

        // Launch Handler to Integrate the NewData
        mHandler.postDelayed(mLaunchIntegration,1000);
    }  
}