2017-06-16 3 views
0

私は、あるアクティビティ(認証ページ)から別のアクティビティに自分のデータを渡してFacebook loggedInユーザーにアクセスするつもりです。私は自分のコードでエラーが表示されませんが、ユーザー名を表示するテキストは空(空白)を返します。 ここには何が欠けていますか?私はこれを達成するためにS.Oのサンプル問題の答えに従った。Facebookの後のユーザー名を別のアクティビティに渡す-Xamarin

auth.cs

mProfileTracker = new MyProfileTracker(); 
      mProfileTracker.mOnProfileChanged += FindFaceBookUserProfile; 
      mProfileTracker.StartTracking(); 

    private void FindFaceBookUserProfile(object sender, OnProfileChangeEventArgs e) 
      { 
         LoggedInUserName.Text = position.FindProfile.Name; 
         LoggedInUserLastName.Text = position.FindProfile.Name; 
     MajorActivity)); 
         intent.PutExtra(MajorActivity.EXTRA_NAME, LoggedInUserName.Text); 
         this.StartActivity(intent); 

        } 

public void OnSuccess(Java.Lang.Object result) 
     { 
      LoginResult loginResult = result as LoginResult; 
      Console.WriteLine(loginResult.AccessToken.UserId); 
      GetId= loginResult.AccessToken.UserId; 
     } 
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data) 

     { 
      base.OnActivityResult(requestCode, resultCode, data); 
      mCallbackManager.OnActivityResult(requestCode, (int)resultCode, data); 
     } 

MajorActivity

 public const string EXTRA_NAME = "UserName"; 
     protected override void OnCreate(Bundle savedInstanceState) 
     { 

      base.OnCreate(savedInstanceState); 

      string UserName = Intent.GetStringExtra(EXTRA_NAME); 
} 

var headerView = navigationView.GetHeaderView(0); 
GetUserName= headerView.FindViewById<TextView>(Resource.Id.loginUser); 
GetUserName.Text = UserName; 
+0

LoggedInUserNameのコードも投稿してください –

+0

@RedM、私です私のユーザーを認証することができます。 auth.csのLoggedInUserNameを出力すると、その名前を見ることができます。しかし、私はMajorActivityのナビゲーションビューにデータを渡そうとしています。問題は意図の部分から来ているようです。私は確信しています:)コード –

答えて

0

あなたの意思で文字列を抽出しようとしています。あなたは私が信じているだけでなく、文字列を配置する必要があります。あなたのauth.csで

intent.PutExtra(MajorActivity.EXTRA_NAME, LoggedInUserName.toString()); 

リファレンスAndroid Intent.getStringExtra() returns null

+0

'intent.PutExtra(MajorActivity.EXTRA_NAME、LoggedInUserName.Text.toString())';これは私が今持っているものです..それはまだ空白です。私は、アプリケーションを実行するエラーを取得しません。アプリケーションは正常に動作しますが、テキストは空白です。上記のコードに少し変更を加えたことに注意してください。 LoggedInUserName.Text –

+0

この部分はonCreateメソッド内にある必要があります。 UserName Stringはそのメソッドに対してローカルなので、 var headerView = navigationView.GetHeaderView(0); GetUserName = headerView.FindViewById (Resource.Id.loginUser); GetUserName.Text = UserName; –

+0

これは既に私のonCreateメソッドにあります:)しかし、私はGetUserName.Text = "Hello"を設定すると動作します。それは、UserNameが到達していないか、何か? –

0

を試してみてください、私はあなたの意図のためにあなたの割り当て新しいメモリが表示されていないので、この試してください:あなたのMajorActivity.classで、その後

Intent i = new Intent(this, MajorActivity.class); 
i.putExtra(MajorActivity.EXTRA_NAME, LoggedInUserName.Text); 
startActivity(intent); 

をこれを行う:

Bundle extras = getIntent().getExtras(); 
if(extras !=null) { 
    String value = extras.getString(MajorActivity.EXTRA_NAME); 
} 
+0

私は実際にXamarin.Droidを使用しています。 (C#)。 Javaのあなたの多くのように見える –

+0

ええ、私はよりJavaです。あなたはこのロジックをあなたのコードに変換できますか? –

+0

私はXamarinのフォーラムを見ていますが、私は論理を得ます –

関連する問題