2016-04-07 7 views
1

画像enter image description hereの下で教授の写真を見ることができます。私はFacebookからユーザー名、E-mail ID、Prof Picを取得しています。ユーザー名とE-mail IDをナビゲーションドロワーのアクティビティでフックしましたが、Facebookからフェッチしたprof_picを表示する方法はわかりません。それを割り当てる方法はありません。そこit.theは以下nav_header.xmlナビゲーション引き出しアクティビティで取り出したプロフィール画像を表示

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/nav_header_height" 
    android:background="@drawable/side_nav_bar" 
    android:gravity="bottom" 
    android:orientation="vertical" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin"> 

    <ImageView 
     android:id="@+id/profpic" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingTop="@dimen/nav_header_vertical_spacing" 
     android:src="@android:drawable/sym_def_app_icon" /> 

</LinearLayout> 

で行うための任意の可能な方法であり、これは私が の.javaクラスファイルからprof_picをフェッチする必要があるのjavaファイルであるなら、私に知らせて

public class Testing2 extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener { 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_testing2); 

     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     ////////Code is used to fetch the user name//////////// 
     Bundle b = getIntent().getExtras(); 


     NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setNavigationItemSelectedListener(this); 
     TextView facebookName = (TextView) navigationView.getHeaderView(0).findViewById(R.id.manner); 
     TextView Email = (TextView) navigationView.getHeaderView(0).findViewById(R.id.email); 
     ImageView profilePictureView = (ImageView) navigationView.getHeaderView(0).findViewById(R.id.profpic); 

     ////////Code is used to display the user name after fetching it from other activity//////////// 
     facebookName.setText(b.getCharSequence("name")); 
     Email.setText(b.getCharSequence("email")); 
     profilePictureView.setProfileId(); 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
       this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
     drawer.setDrawerListener(toggle); 
     toggle.syncState(); 

    } 

これは私が最善の方法は、ピカソライブラリを使用することになり

public class SelfTrail extends AppCompatActivity implements View.OnClickListener { 

    private LoginButton btnLogin; 
    TextView facebookName; 
    TextView Email; 
    Button button; 
    private CallbackManager callbackManager; 
    private ProfilePictureView profilePictureView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     FacebookSdk.sdkInitialize(getApplicationContext()); 

     setContentView(R.layout.activity_self_trail); 
     findAllViewsId(); 
     button.setOnClickListener(this); 

     btnLogin = (LoginButton)findViewById(R.id.login_button); 
     facebookName = (TextView)findViewById(R.id.name); 
     Email = (TextView)findViewById(R.id.Email); 
     profilePictureView = (ProfilePictureView)findViewById(R.id.image); 


     btnLogin.setReadPermissions(Arrays.asList("public_profile, email")); 
     callbackManager = CallbackManager.Factory.create(); 

     if(AccessToken.getCurrentAccessToken() != null){ 
      RequestData(); 
      facebookName.setVisibility(View.VISIBLE); 
      Email.setVisibility(View.VISIBLE); 
      profilePictureView.setVisibility(View.VISIBLE); 
     } 

     btnLogin.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 

      @Override 
      public void onSuccess(LoginResult loginResult) { 
       GraphRequest request = GraphRequest.newMeRequest(
         loginResult.getAccessToken(), 
         new GraphRequest.GraphJSONObjectCallback() { 

          @Override 
          public void onCompleted(JSONObject object, GraphResponse response) { 
           Log.v("Main", response.toString()); 
           setProfileToView(object); 
          } 
         }); 
       Bundle parameters = new Bundle(); 
       parameters.putString("fields", "id,name,email"); 
       request.setParameters(parameters); 
       request.executeAsync(); 

      } 

      @Override 
      public void onCancel() { 

      } 

      @Override 
      public void onError(FacebookException exception) { 

      } 
     }); 
     } 




    private void findAllViewsId() { 
     button = (Button) findViewById(R.id.next); 
     facebookName = (TextView)findViewById(R.id.name); 
     Email = (TextView)findViewById(R.id.Email); 
     profilePictureView = (ProfilePictureView)findViewById(R.id.image); 
    } 

    @Override 
    public void onClick(View v) { 

     Intent intent = new Intent(getApplicationContext(), Testing2.class); 
     //Create a bundle object 
     Bundle b = new Bundle(); 

     //Inserts a String value into the mapping of this Bundle 
     b.putString("name", facebookName.getText().toString()); 
     b.putString("email", Email.getText().toString()); 
     b.putString("image", profilePictureView.toString()); 

     //Add the bundle to the intent. 
     intent.putExtras(b); 

     //start the DisplayActivity 
     startActivity(intent); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     callbackManager.onActivityResult(requestCode, resultCode, data); 
    } 


    public void RequestData(){ 
     GraphRequest request = GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(), new GraphRequest.GraphJSONObjectCallback() { 
      @Override 
      public void onCompleted(JSONObject jsonObject,GraphResponse response) { 

       JSONObject json = response.getJSONObject(); 
       try { 
        if(json != null){ 
         facebookName.setText(jsonObject.getString("name")); 
         Email.setText(jsonObject.getString("email")); 
         profilePictureView.setPresetSize(ProfilePictureView.NORMAL); 
         profilePictureView.setProfileId(jsonObject.getString("id")); 
        } 

       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
     Bundle parameters = new Bundle(); 
     parameters.putString("fields", "id,name,email"); 
     request.setParameters(parameters); 
     request.executeAsync(); 
    } 


    private void setProfileToView(JSONObject jsonObject) { 
     try { 
      facebookName.setText(jsonObject.getString("name")); 
      Email.setText(jsonObject.getString("email")); 

      profilePictureView.setPresetSize(ProfilePictureView.NORMAL); 
      profilePictureView.setProfileId(jsonObject.getString("id")); 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 

} 

答えて

4

PICユーザ名、メールIDと教授をフェッチするために使用さ.javaファイルです。自動的に背景のURLから画像を取得し、それをimageViewに設定します。

依存関係、あなたのコードの代わりに、profilePictureView.setProfileId(中

  compile 'com.squareup.picasso:picasso:2.5.2' 

そして下のbuild.gradleファイルにこれを追加)。 use

  Picasso.with(this).load("http://graph.facebook.com/"+userID+"/picture?type=small").into(profilePictureView) 

ここで、userIDはプロファイルの使用されたIDです。

profilePictureView.setProfileId();

しかし、単に画像を設定するには、使用します:

+0

compile 'com.squareup.picasso:picasso:2.5.2'

  • を取り込んだ画像を表示するために、あなたの活動に追加あなたは与えました。私はそれをしました。エラーは「エラー:違法な式の開始」です。 '<あなたがfacebookから手に入れた画像のURL>'の場所 – Eggsy

  • +0

    はい。あなたはfacebookから得た画像のURLに置き換えてください。 –

    +0

    「Picasso.with(this)).load()。into(profilePictureView);のような保存された値を試してみました。私は同じエラーを打つ – Eggsy

    1

    私はこれが何をするか分からない

    profilePictureView.setImageBitmap(pass_image_bitmap_here);

    +0

    @RageshRameshと同じように、ピカソを使うべきです。 –

    0

    が必要なのは、ユーザーのユーザーIDで、次のような関数を呼び出すことができます:

    /** 
    * Function loads the users facebook profile pic 
    * 
    * @param userID 
    */ 
    public Bitmap getUserPic(String userID) { 
        String imageURL; 
        Bitmap bitmap = null; 
        Log.d(TAG, "Loading Picture"); 
        imageURL = "http://graph.facebook.com/"+userID+"/picture?type=small"; 
        try { 
         bitmap = BitmapFactory.decodeStream((InputStream)new URL(imageURL).getContent()); 
        } catch (Exception e) { 
         Log.d("TAG", "Loading Picture FAILED"); 
         e.printStackTrace(); 
        } 
        return bitmap; 
    } 
    
    1

    効率的な方法でイメージを読み込むためのイメージローディングライブラリ(PicassoまたはGlideのように)をいつでもイメージローディングライブラリで使用できます。あなたの場合 、(ピカソを使用して)私はこのことができます願ってい

    Picasso.with(context) 
         .load(url) 
         .placeholder(R.drawable.loading_img) 
         .error(R.drawable.error_img) 
         .into(profilePictureView); 
    
    あなたのurl = https://graph.facebook.com/ "+ ID +" /絵

    ?幅= 200 &高さ= 150

    を書くことができます。

    0

    これは私が思いついた方法です。

    アンドロイドの画像処理に使用されるPicassoライブラリを使用してください。

    1. のGradleに依存関係を追加します:あなたは私は正確にコードをコピーしたい場合は

      Picasso.with(context) 
          .load(url) 
          .placeholder(R.drawable.loading_img) 
          .error(R.drawable.error_img) 
          .into(profilePictureView); 
      
    関連する問題