2015年7月29日 星期三

[Android] 其他class使用MainActivity元件

MainActivity.java

static MainActivity ths;

@Overrideprotected void onCreate(Bundle savedInstanceState) {
    ....
    ths = this;
    TextView showName = (TextView)findViewById(R.id.showName);

    public static MainActivity getInstance()
    {
       return ths; 
    }

    ....

    public void updateTheTextView(final String t) {
      MainActivity.this.runOnUiThread(new Runnable() {
         public void run() {
             showName.append(t);
         }
      });
    }
}




Others.java
使用MainActivity的texview就只要如下:

MainActivity.getInstance().updateTheTextView(strAddress);

[Android] Handler should be set to static to avoid memory leak

腦弱, 每次都忘記怎麼寫, 還要去開以前的code出來, 紀錄在這比較快 XD


private final MyHandler myhandler = new MyHandler(this);

.....

public static class MyHandler extends Handler {
    private final WeakReference<MainActivity> mActivity;

    public MyHandler(MainActivity activity) {
        mActivity = new WeakReference<>(activity);
    }

    @Override    public void handleMessage(Message msg) {
        final MainActivity activity = mActivity.get();
        if (activity != null) {
            // TODO: implement your code here

        }
    }
}