Mang đến cho bạn hành trang là Kiến thức và Kinh nghiệm

Lựa chọn chủ đề bạn quan tâm

Cùng nhau thảo luận về các vấn đề

Hãy theo dõi chúng tôi nếu bạn thấy bổ ích

  1. Hỏi đáp IT
  2. Hỏi nhanh

Cách chuyển activity sau khi đăng nhập app bằng acc Facebook

900 Lượt xem 11 Bình luận 0 Lượt báo xấu
Em đang làm làm 1 app có chức năng đăng nhập bằng acc facebook, em sử dụng sẵn một cái hàm API của gói Facebook SDK. 
Em có 2 cái layout
- cái layout 1 có button Login, khi bấm vào sẽ chuyển mở hộp thoại đăng nhập vào app
Code:
  btnLogin.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
login();
}
});
login() là hàm API dùng để đăng nhập = acc facebook
- layout 2 chứa nội dung app
khổ cái là khi đăng nhập xong thì nó vẫn hiện ra cái layout 1, bây giờ em muốn sau khi đăng nhập xong nó chuyển sang activity 2 chứa layout 2 thì phải làm thế nào hả các bác. (em nghe nói là có thể dùng hàm callback)
Hy vọng sớm có câu trả lời,Thanks!
Câu trả lời

- Bạn đã sẵn sàng thảo luận về chủ đề này. Hãy bấm "Viết bình luận", bạn có thể lựa chọn sử dụng tài khoản Facebook hoặc Google++

- Vì sự phát triển của cộng đồng CNTT/CNPM tại Việt Nam!

Unknown user
No responses yet

bạn đã bắt được sự kiện login thành công chưa ?
nếu bắt được rồi thì startActivity thứ 2 lên thôi !
có thể để bắt sự kiện này Activity1 của em sẽ phải implement 1 interface do FB cung cấp
1 Lượt thích

Login thường là một task tốn thời gian, vì vậy bạn chỉ nên chạy nó trên background task thôi. Chuyển qua Activity khác thì dùng Intent là xong. 
Cách mà mình xử lý (không chắc tối ưu):
1) Tạo một AsyncTask để log in với tham số là username/password
2) Trong hàm onPostExecute(), start một Intent chuyển qua activity khác.
3) Trong lúc login, tạo một hiệu ứng chờ (ví dụ spinning chẳng hạn) và lưu ý chỉ có những task nào chạy dưới 5 sec thì mới được dùng ở Main Thread (tương đuơng với Event Thread bên Java Swing). Ví dụ
trong hàm onProgressUpdate() chẳng hạn.
4) Dùng phần FB logIn thì cứ để vào doInBackground rồi chờ kết quả trả về từ onPostExecute.
0 Lượt thích

cám ơn mọi người nhiều
em cũng mới newbie thôi, cũng chỉ biết bấm button để chuyển activity thôi chứ chưa biết làm sao để chuyển activity sau khi đăng nhập 
hàm login() của em đây

public login() {
    // start Facebook Login
    Session.openActiveSession(this, true, new Session.StatusCallback() {

      // callback when session changes state
      @Override
      public void call(Session session, SessionState state, Exception exception) {
        if (session.isOpened()) {

          // make request to the /me API
          Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {

            // callback after Graph API response with user object
            @Override
            public void onCompleted(GraphUser user, Response response) {
              if (user != null) {
                TextView welcome = (TextView) findViewById(R.id.welcome);
                welcome.setText("Hello " + user.getName() + "!");
              }
            }
          });
        }
      }
    });
}
0 Lượt thích

bạn thử xem , OtherActivity là cái activity thứ 2 của bạn nhé
0 Lượt thích

Bạn tienhuong có ví dụ nào chỉ mình xem qua cái được không bạn.
0 Lượt thích

Đây bạn.Ví dụ:

MainActivity.java

  1. package com.cviet.demo;
  2.  
  3. import java.lang.ref.WeakReference;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6.  
  7. import org.apache.http.NameValuePair;
  8. import org.apache.http.message.BasicNameValuePair;
  9.  
  10. import android.opengl.Visibility;
  11. import android.os.AsyncTask;
  12. import android.os.Bundle;
  13. import android.app.Activity;
  14. import android.content.Intent;
  15. import android.view.Menu;
  16. import android.view.View;
  17. import android.view.View.OnClickListener;
  18. import android.widget.Button;
  19. import android.widget.ProgressBar;
  20.  
  21. public class MainActivity extends Activity {
  22.  
  23.     @Override
  24.     protected void onCreate(Bundle savedInstanceState) {
  25.         super.onCreate(savedInstanceState);
  26.         setContentView(R.layout.activity_main);
  27.         final Button b = (Button) findViewById(R.id.activity_main_xml_button_login);
  28.         final ProgressBar pb = (ProgressBar) findViewById(R.id.activity_main_xml_progressbar);
  29.         b.setOnClickListener(new OnClickListener() {
  30.             @Override
  31.             public void onClick(View v) {
  32.                 pb.setVisibility(0);
  33.                 new LoginTask(MainActivity.this, "username", "password").execute();
  34.             }
  35.         });
  36.     }
  37.  
  38.     private static class LoginTask extends AsyncTask {
  39.         private String username;
  40.         private String password;
  41.         private WeakReference ref;
  42.  
  43.         public LoginTask(MainActivity a, String username, String password) {
  44.             attach(a);
  45.             this.username = username;
  46.             this.password = password;
  47.         }
  48.  
  49.         @Override
  50.         protected void onPreExecute() {
  51.         }
  52.        
  53.         @Override
  54.         protected void onProgressUpdate(Integer... values) {
  55.            
  56.         }
  57.  
  58.         @Override
  59.         protected Integer doInBackground(Void... voids) {
  60.             // dummy data
  61.             List datas = new ArrayList();
  62.             datas.add(new BasicNameValuePair("username", username));
  63.             datas.add(new BasicNameValuePair("password", password));
  64.             // dummy user id
  65.             int fakeUserId = 7;
  66.             // pretend some work load
  67.             sleepFor(10);
  68.             return fakeUserId;
  69.         }
  70.  
  71.         @Override
  72.         protected void onPostExecute(Integer userId) {
  73.             ref.get().logIn(userId);
  74.             detach();
  75.         }
  76.  
  77.         public void attach(MainActivity a) {
  78.             ref = new WeakReference(a);
  79.         }
  80.  
  81.         public void detach() {
  82.             ref.clear();
  83.         }
  84.  
  85.         private void sleepFor(int secs) {
  86.             try {
  87.                 Thread.sleep(secs * 1000);
  88.             } catch (InterruptedException e) {
  89.                 // ignore
  90.             }
  91.         }
  92.  
  93.     }
  94.  
  95.     public void logIn(Integer id) {
  96.         startActivity(new Intent(getApplicationContext(), OtherActivity.class));
  97.         finish();
  98.     }
  99. }
0 Lượt thích

OtherActivity.java

  1. package com.cviet.demo;
  2.  
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5.  
  6. public class OtherActivity extends Activity {
  7.     @Override
  8.     protected void onCreate(Bundle savedInstanceState) {
  9.         super.onCreate(savedInstanceState);
  10.         setContentView(R.layout.other_activity);
  11.     }
  12. }
0 Lượt thích

activity_main.xml

  1.    xmlns:tools="http://schemas.android.com/tools"
  2.    android:orientation="vertical"
  3.    android:layout_width="match_parent"
  4.    android:layout_height="match_parent">
  5.  
  6.     
  7.        android:id="@+id/activity_main_xml_edittext_username"
  8.        android:layout_width="fill_parent"
  9.        android:layout_height="wrap_content"
  10.        android:hint="username"
  11.        android:inputType="textPersonName" />
  12.  
  13.     
  14.        android:id="@+id/activity_main_xml_edittext_password"
  15.        android:layout_width="fill_parent"
  16.        android:layout_height="wrap_content"
  17.        android:hint="password"
  18.        android:inputType="textPassword" >
  19.     
  20.  
  21.     
  22.        android:id="@+id/activity_main_xml_button_login"
  23.        android:layout_width="wrap_content"
  24.        android:layout_height="wrap_content"
  25.        android:text="Log In" />
  26.  
  27.     
  28.        android:id="@+id/activity_main_xml_progressbar"
  29.        style="?android:attr/progressBarStyleSmall"
  30.        android:visibility="invisible"
  31.        android:layout_width="wrap_content"
  32.        android:layout_height="wrap_content" />
  33.  
  34. >
0 Lượt thích

other_activity.xml

  1.    xmlns:tools="http://schemas.android.com/tools"
  2.    android:layout_width="match_parent"
  3.    android:layout_height="match_parent">
  4.     
  5.        android:layout_width="wrap_content"
  6.        android:layout_height="wrap_content"
  7.        android:text="Other Activity">
  8.     
  9. >
0 Lượt thích

AndroidManifest.xml

  1.    package="com.cviet.demo"
  2.    android:versionCode="1"
  3.    android:versionName="1.0" >
  4.  
  5.     
  6.        android:minSdkVersion="8"
  7.        android:targetSdkVersion="10" />
  8.  
  9.     
  10.        android:allowBackup="true"
  11.        android:icon="@drawable/ic_launcher"
  12.        android:label="@string/app_name"
  13.        android:theme="@style/AppTheme" >
  14.        
  15.         
  16.            android:name=".MainActivity"
  17.            android:label="@string/app_name" >
  18.             
  19.                 
  20.                 
  21.             
  22.         
  23.        
  24.         
  25.             android:name=".OtherActivity" >
  26.            
  27.                 
  28.                 
  29.             
  30.         
  31.     
  32.  
  33. >
0 Lượt thích

Cảm ơn mọi người đã giúp đỡ.
0 Lượt thích

Từ khóa tìm kiếm

Câu trả lời mới nhất

Tin tuyển dụng