2012-09-30 32 views
13

Tôi muốn bắt đầu một hoạt động mới trong lớp phi Hoạt động mà thực hiện một DialogListener Sau đây là mã của tôi:Bắt đầu Hoạt động mới từ lớp Hoạt động phi

public class FacebookLoginDialog implements DialogListener { 
    @Override 
    public void onComplete(Bundle values) { 
    HomeActivity.showInLog(values.toString()); 

    Intent i1 = new Intent (this, SearchActivity.class); 
    startActivity(i1); 
    } 

    @Override 
    public void onFacebookError(FacebookError e) { 
    // TODO Auto-generated method stub 
    } 

    @Override 
    public void onError(DialogError e) { 
    // TODO Auto-generated method stub 
    } 

    @Override 
    public void onCancel() { 
    // TODO Auto-generated method stub 
    } 
} 

tôi không thể bắt đầu hoạt động mới sử dụng ý trong onComplete phương pháp, xin vui lòng giúp đỡ.

Cảm ơn

+0

cố gắng để thay đổi "này" để getApplicationContext(), hoặc vượt qua bối cảnh từ một hoạt động –

+0

Lưu ý rằng tôi muốn bắt đầu hoạt động khi đăng nhập thực hiện thành công đó là lý do tại sao tôi đã bắt đầu hoạt động trong phương thức onComplete – Nadeem

+0

Tôi đã thay đổi điều này thành getApplicationContext(), nhưng nó không thể giải quyết được vấn đề của tôi. Bạn có thể cho biết chính xác tôi nên vượt qua ngữ cảnh từ một hoạt động không? SearchActivity là hoạt động tôi muốn bắt đầu – Nadeem

Trả lời

21

Điều này không hiệu quả vì bạn cần Context để bắt đầu hoạt động mới. Bạn có thể sắp xếp lại lớp học của mình thành một thứ như sau:

public class FacebookLoginDialog implements DialogListener { 
    private final Context context; 

    public FacebookLoginDialog(Context context) { 
    this.context = context; 
    } 

    @Override 
    public void onComplete(Bundle values) { 
    HomeActivity.showInLog(values.toString()); 

    Intent i1 = new Intent (context, SearchActivity.class); 
    context.startActivity(i1); 
    } 

    //Other methods... 
} 

Sau đó, nó sẽ hoạt động.

+0

Tôi sẽ lo lắng về nơi mà Context trong constructor đến từ đó. Sẽ không (Hoạt động) .getContext() sẽ tốt hơn? – Simon

+1

@Simon Không có phương thức 'Activity.getContext()', hoạt động là một ngữ cảnh. – Malcolm

+0

Hmm. 13 giờ làm việc và quá nhiều rượu với bữa tối. Tôi biết ý tôi là gì, đó là cả hai vấn đề sai và hợp chất, thể hiện không chính xác. Thời gian để gọi nó thoát cho đêm ... – Simon

9

đèo bối cảnh như tham số nhà xây dựng và sau đó thử này

Intent i = new Intent(this, SearchActivity.class); 
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
context.startActivity(i); 
+0

Nó hoạt động trên Samsung s4 nhưng không phải trong Galaxy Note 2 !! bất kỳ đề xuất –

Các vấn đề liên quan