zoukankan      html  css  js  c++  java
  • 实现Activity刷新(转)

    目前刷新Acitivity,只想到几种方法。仅供参考,如果您有更好的方法,请赐教。

    程序界面:

    点击refresh view可以刷新界面,点击write content可以在EditText中自动写入文字。

    1. intent

    1. package mark.zhang;  
    2.   
    3. import android.app.Activity;  
    4. import android.content.Intent;  
    5. import android.os.Bundle;  
    6. import android.util.Log;  
    7. import android.view.View;  
    8. import android.view.View.OnClickListener;  
    9. import android.widget.EditText;  
    10.   
    11. public class RefreshActivityTest extends Activity {  
    12.     private EditText showInfo = null;  
    13.       
    14.     @Override  
    15.     public void onCreate(Bundle savedInstanceState) {  
    16.         super.onCreate(savedInstanceState);  
    17.         setContentView(R.layout.main);  
    18.         showInfo = (EditText) findViewById(R.id.show);  
    19.           
    20.         Log.d("mark""refresh this activity!");  
    21.         // 获取便于对比启动是哪个Activity  
    22.         setTitle("taskId:" + this);  
    23.         // 刷新  
    24.         findViewById(R.id.button_refresh).setOnClickListener(new OnClickListener() {  
    25.               
    26.             @Override  
    27.             public void onClick(View v) {  
    28.                 refresh();  
    29.             }  
    30.         });  
    31.         // 填写文字  
    32.         findViewById(R.id.button_write).setOnClickListener(new OnClickListener() {  
    33.               
    34.             @Override  
    35.             public void onClick(View v) {  
    36.                 showInfo.append("you have wrote successfully! ");  
    37.             }  
    38.         });  
    39.     }  
    40.       
    41.     /** 
    42.      * 刷新 
    43.      */  
    44.     private void refresh() {  
    45.         finish();  
    46.         Intent intent = new Intent(RefreshActivityTest.this, RefreshActivityTest.class);  
    47.         startActivity(intent);  
    48.     }  
    49. }  

    这种方式可以启动很多Activity实例,我们不停的点击refresh view这个按钮,就可以看到打印结果:

    所以这种方式,如果没有finish()方法,那么会有很多Activity实例存在。假如你不使用finiish()方法的话,多次点击refresh view这个按钮,再点击手机的返回按钮,就会出现很多activity实例。

    2. 调用回调方法onCreate

    修改refresh()方法,如下:

    1. /** 
    2.   * 刷新 
    3.   */  
    4. private void refresh() {  
    5.         /*finish(); 
    6.         Intent intent = new Intent(RefreshActivityTest.this, RefreshActivityTest.class); 
    7.         startActivity(intent);*/  
    8.           
    9.         onCreate(null);  
    10. }  

    运行App,点击write content多次:

    点击refresh view按钮:

    可以看出,刷新ok!!!!!
    这种方法,只有一个Activity实例。
    3. invalidate()

    这种方法,行不通,只是拿出来说一说。

    1. /** 
    2.   * 刷新 
    3.   */  
    4.     private void refresh() {  
    5.           
    6.         LinearLayout layout = (LinearLayout) findViewById(R.id.ll);  
    7.         layout.invalidate();  
    8. }  

    4. 重新加载布局文件

    这个方法是第二种方法的子集,是一个有Bug的方法。

    1. /** 
    2.   * 刷新 
    3.   */  
    4. rivate void refresh() {  
    5.    setContentView(R.layout.main);  

    点击refresh viiew:

    但是,再次点击write content不会有效果。

    主要是因为,重新加载xml文件之后,需要再次使用findViewById()方法来创建控件。

    摘自: http://blog.csdn.net/hbzh2008/article/details/7458189

  • 相关阅读:
    语言基础
    进制转换
    ado属性扩展
    ado数据模型和数据访问类,泛型集合
    完整的修改和删除
    完整的删除
    修改
    类库
    接口
    抽象类
  • 原文地址:https://www.cnblogs.com/YangBinChina/p/3658609.html
Copyright © 2011-2022 走看看