發文作者:wekon | 五月 28, 2009

Android 之 消失的變數值

IMG_0367

為了這個 bug 花了不少時間
似乎是 GPhone or Android 的 bug?

有時候 Android 程式中的變數值會莫名其妙消失
以下面例子而言

package com.dcslab.test;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;

public class Test extends Activity{

String testString="";
Activity self=this;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

LinearLayout ll=new LinearLayout(this);
Button bt1=new Button(this);
bt1.setText(“set"); bt1.setWidth(100);
bt1.setOnClickListener(
new OnClickListener() {
public void onClick(View v) {
testString="ok!";
Toast.makeText(self, “success", 20).show();
}
});
Button bt2=new Button(this);
bt2.setText(“check"); bt2.setWidth(100);
bt2.setOnClickListener(
new OnClickListener() {
public void onClick(View v) {
Toast.makeText(self, “the result is:"+testString, 20).show();
}
});
ll.addView(bt1);
ll.addView(bt2);
setContentView(ll);
}
}

IMG_0354

我有一個 member variable testString,一開始給他空字串
變數值可以用 bt1 按鈕來進行設定

IMG_0359

然後用 bt2 show 出來
正常來說,結果會像這樣

IMG_0363

但,神奇的是
如果你將滑蓋拉開再拉回來,像這樣:

IMG_0364

結果就會變成:

IMG_0367

testString 的值不見了 !!!
當然,接下來的程式就沒辦法使用剛剛按鈕設定的結果了
應該不會是故意設計成這樣的吧 …

最後解決方法是將 testString 設定成 static variable 就可以了


發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s

分類

%d 位部落客按了讚: