2014-04-22 5 views
0

Welcome TextView를 변경할 수 없습니다. 도움이 필요해. 아래 코드를 참조하십시오 :TextView 안드로이드의 텍스트를 변경할 수 없습니다.

페이스 북의 로그인으로 새로운 애플 리케이션을 개발하고 있습니다.

내가 다시 편집 모든 코드를 보여 ...

package app.android.listasvip; 

import android.support.v7.app.ActionBarActivity; 
import android.support.v7.app.ActionBar; 
import android.support.v4.app.Fragment; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 

import android.app.Activity; 
import android.content.Intent; 
import android.widget.TextView; 
import com.facebook.*; 
import com.facebook.model.*; 

public class MainActivity extends ActionBarActivity { 

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

     if (savedInstanceState == null) { 
      getSupportFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment()).commit(); 
     } 

     // 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.newMeRequest(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() + "!"); 
          } 
         } 
        }).executeAsync(); 
       } 
      } 
     }); 
    } 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (Session.getActiveSession() != null) { 
      Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data); 
     } 
     super.onActivityResult(requestCode, resultCode, data); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      TextView welcome = (TextView) findViewById(R.id.welcome); 
      welcome.setText("Configurações"); 
     } 
     return super.onOptionsItemSelected(item); 
    } 

    /** 
    * A placeholder fragment containing a simple view. 
    */ 
    public static class PlaceholderFragment extends Fragment { 

     public PlaceholderFragment() { 
     } 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
      View rootView = inflater.inflate(R.layout.fragment_main, container, false); 
      return rootView; 
     } 
    } 

} 
+0

...하고 글로벌 확인한 다음 텍스트 만 변경이 작동합니다 –

+0

OnCreate에 있습니다 ... –

+0

아니요, 콜백/인터페이스'onCompleted'에 없습니다 –

답변

0

당신은 executeAsync 귀하의 요청을 실행해야한다(). 당신의 활동에

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.newMeRequest(session, new Request.GraphUserCallback() { 

       @Override 
       public void onCompleted(GraphUser user, Response response) {        
        if (user != null) { 
         TextView welcome = (TextView) findViewById(R.id.welcome); 
         welcome.setText("Olá "+user.getName()+"!"); 
        } 
       } 
      }).executeAsync(); 
     } 
    } 
}); 

덮어 쓰기하여 onActivityResult : 그렇지 않으면 실행되지 않습니다에서 onCreate()에서 텍스트 뷰 초기화

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (Session.getActiveSession() != null) { 
     Session.getActiveSession().onActivityResult(this, requestCode, 
       resultCode, data); 
    } 
    super.onActivityResult(requestCode, resultCode, data); 
} 
+0

아무 일도 없었습니다 .../ –

+0

onActivityResult를 덮어 썼습니까? Session.getActiveSession(). onActivityResult (this, requestCode, resultCode, data); – Jan

+0

또한 세션이 실제로 열리는 경우 코드 디버깅을 시도하십시오 ... – Jan

관련 문제