2014-04-22 138 views
0

无法更改欢迎使用TextView。我需要帮助。请参阅下面的代码:无法更改TextView的文本Android

我正在开发与Facebook登录的新应用程序安卓。

我再次编辑,显示所有的代码...

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

初始化中的onCreate()你的TextView ...并使其全球然后只更改文本,这应该工作 –

+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在你的活动有:

@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