Android: вызов нестатических методов из статического класса Handler

Учитывая этот код:

public class MainActivity extends FragmentActivity implements ActionBar.TabListener {

public static final int MESSAGE_NOT_CONNECTED = 1;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_layout);
}

// -------------------------------------------------
public final void setStatus(int Rid) {
    final ActionBar actionBar = getActionBar();
    actionBar.setSubtitle(Rid);
}

// -------------------------------------------------
static Handler mHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        switch (msg.what) {
        case MESSAGE_NOT_CONNECTED:
            setStatus(R.string.title_not_connected);
            break;
        }
    }
}
}

Я получаю ошибку компиляции: Невозможно сделать статическую ссылку на нестатический метод setStatus (int) ...

Что имеет смысл, потому что getActionBar () в setStatus () является нестатическим методом.

Я сделал класс Handler статическим из-за предупреждения: этот класс Handler должен быть статическим, иначе могут возникнуть утечки.

Вопрос: как правильно получить доступ к методу setStatus () из статического обработчика?

РЕДАКТИРОВАТЬ: новый код обработчика является ответом.

static class hHandler extends Handler {
    private final WeakReference<MainActivity> mTarget;
    hHandler(MainActivity target) {
        mTarget = new WeakReference<MainActivity>(target);
    }

    @Override
    public void handleMessage(Message msg) {
        MainActivity target = mTarget.get();
        If(target == null) {
             return;
        }
        switch (msg.what) {
        case MESSAGE_NOT_CONNECTED:
            target.setStatus(R.string.title_not_connected);
            break;
        }
    }
}

Ответы на вопрос(3)

Ваш ответ на вопрос