Определить startActivity?

1

Hy! Мне нужно реализовать startActivity для класса, определяющего кнопку входа. Как я могу реализовать то, что делает startActivity()?

Вот мой класс:

public class LoginButton extends ImageButton {

    private Facebook mFb;
    private Handler mHandler;
    private SessionListener mSessionListener = new SessionListener();
    private String[] mPermissions;
    private Activity mActivity;

    public LoginButton(Context context) {
        super(context);
    }

    public LoginButton(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public LoginButton(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public void init(final Activity activity, final Facebook fb) {
        init(activity, fb, new String[] {});
    }

    public void init(final Activity activity, final Facebook fb,
                     final String[] permissions) {
        mActivity = activity;
        mFb = fb;
        mPermissions = permissions;
        mHandler = new Handler();

        setBackgroundColor(Color.TRANSPARENT);
        setAdjustViewBounds(true);
        setImageResource(fb.isSessionValid() ?
                         R.drawable.logout_button : 
                         R.drawable.login_button);
        drawableStateChanged();

        SessionEvents.addAuthListener(mSessionListener);
        SessionEvents.addLogoutListener(mSessionListener);
        setOnClickListener(new ButtonOnClickListener());

    }

    private final class ButtonOnClickListener implements OnClickListener {

        public void onClick(View arg0) {
            if (mFb.isSessionValid()) {
                SessionEvents.onLogoutBegin();
                AsyncFacebookRunner asyncRunner = new AsyncFacebookRunner(mFb);
                asyncRunner.logout(getContext(), new LogoutRequestListener());
            } else {
                mFb.authorize(mActivity, mPermissions,
                              new LoginDialogListener());
                Intent i = new Intent(getContext(), com.Xperia.MultipleOptions.class);
                startActivity(i);

            }
        }
    }

    private final class LoginDialogListener implements DialogListener {
        public void onComplete(Bundle values) {
            SessionEvents.onLoginSuccess();
        }

        public void onFacebookError(FacebookError error) {
            SessionEvents.onLoginError(error.getMessage());
        }

        public void onError(DialogError error) {
            SessionEvents.onLoginError(error.getMessage());
        }

        public void onCancel() {
            SessionEvents.onLoginError("Action Canceled");
        }
    }

    private class LogoutRequestListener extends BaseRequestListener {
        public void onComplete(String response, final Object state) {
            // callback should be run in the original thread, 
            // not the background thread
            mHandler.post(new Runnable() {
                public void run() {
                    SessionEvents.onLogoutFinish();
                }
            });
        }
    }

    private class SessionListener implements AuthListener, LogoutListener {

        public void onAuthSucceed() {
            setImageResource(R.drawable.logout_button);
            SessionStore.save(mFb, getContext());
        }

        public void onAuthFail(String error) {
        }

        public void onLogoutBegin() {           
        }

        public void onLogoutFinish() {
            SessionStore.clear(getContext());
            setImageResource(R.drawable.login_button);
        }
    }  
}

и в строке startActivity(i) я получаю

The method startActivity(Intent) is undefined for the type 
 LoginButton.ButtonOnClickListener

Есть идеи?

  • 0
    да, потому что он расширяется как кнопка изображения, а не как активность .... это означает, что этот класс не является классом типа деятельности, или вы можете сказать, что этот класс вообще не является деятельностью .... так что вы не можете вызвать startactivity
  • 0
    Я знаю, что мой класс - это не занятие, но мне нужно startActivity, когда на кнопку нажимают ... я должен сделать это в классе, где я использую LoginButton? Нет другого решения?
Теги:
button
android-intent

2 ответа

1

Для начала нового намерения вам нужен контекст приложения.

Yourclass.this.startActivity(something);
0
mActivity.startActivity(i);

Я думаю, почему вы определили эффективность в первую очередь; возможно, вы просто забыли использовать его.

  • 0
    @Gabrielle Вы уже пробовали это?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню