目前重新整理Acitivity,只想到幾種方法。僅供參考,如果您有更好的方法,請賜教。
程式介面:
點擊refresh view可以重新整理介面,點擊write content可以在EditText中自動寫入文字。
1. intent
package mark.zhang;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.EditText;public class RefreshActivityTest extends Activity {private EditText showInfo = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); showInfo = (EditText) findViewById(R.id.show); Log.d("mark", "refresh this activity!"); // 擷取便於對比啟動是哪個Activity setTitle("taskId:" + this); // 重新整理 findViewById(R.id.button_refresh).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {refresh();}}); // 填寫文字 findViewById(R.id.button_write).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {showInfo.append("you have wrote successfully!\n");}}); } /** * 重新整理 */ private void refresh() { finish(); Intent intent = new Intent(RefreshActivityTest.this, RefreshActivityTest.class); startActivity(intent);}}
這種方式可以啟動很多Activity執行個體,我們不停的點擊refresh view這個按鈕,就可以看到列印結果:
所以這種方式,如果沒有finish()方法,那麼會有很多Activity執行個體存在。假如你不使用finiish()方法的話,多次點擊refresh view這個按鈕,再點擊手機的返回按鈕,就會出現很多activity執行個體。
2. 調用回調方法onCreate
修改refresh()方法,如下:
/** * 重新整理 */private void refresh() { /*finish(); Intent intent = new Intent(RefreshActivityTest.this, RefreshActivityTest.class); startActivity(intent);*/ onCreate(null);}
運行App,點擊write content多次:
點擊refresh view按鈕:
可以看出,重新整理ok!!!!!
這種方法,只有一個Activity執行個體。
3. invalidate()
這種方法,行不通,只是拿出來說一說。
/** * 重新整理 */ private void refresh() { LinearLayout layout = (LinearLayout) findViewById(R.id.ll); layout.invalidate();}
4. 重新載入布局檔案
這個方法是第二種方法的子集,是一個有Bug的方法。
/** * 重新整理 */private void refresh() { setContentView(R.layout.main);}
點擊refresh viiew:
但是,再次點擊write content不會有效果。
主要是因為,重新載入xml檔案之後,需要再次使用findViewById()方法來建立控制項。