0

J'essaie d'écrire une application qui peut se connecter sur twitter. Ma bibliothèque est Twitter4j. Le code fonctionne jusqu'à ce que la méthode onResume soit appelée. LeImpossible de reprendre Activity..java.lang.NullPointerException dans Connexion

exception(Unable to resume Activity...NullPointerException) est à cette ligne dans la méthode

onResume():

AccessToken acc = twitter.getOAuthAccessToken(requestToken,verifier); 

Mais je ne comprends pas où est mon erreur. Quelqu'un peut m'aider??

public class MainActivity extends Activity { 

    private Twitter twitter; 
    private RequestToken requestToken; 
    private static RequestToken re; 
    final public static String CALLBACK_URL = "app://casa"; 
    private RequestToken priv = null; 

    @SuppressLint("NewApi") 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Button b = (Button) findViewById(R.id.button1); 

     b.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       new updateTwitterStatus().execute(); 

      } 
     }); 

    } 

    class updateTwitterStatus extends AsyncTask<Void, Void, String> { 

     @Override 
     protected String doInBackground(Void... params) { 
      String testStatus = "prova tweet "; 

      ConfigurationBuilder cb = new ConfigurationBuilder(); 

      cb.setDebugEnabled(true) 
        .setOAuthConsumerKey("******") 
        .setOAuthConsumerSecret(
          "*******"); 

      try { 
       TwitterFactory tf = new TwitterFactory(cb.build()); 
       twitter = tf.getInstance(); 
       Log.i("bauu", "miao"); 
       requestToken = twitter.getOAuthRequestToken(CALLBACK_URL); 
       String authUrl = requestToken.getAuthenticationURL(); 

       startActivity(new Intent(Intent.ACTION_VIEW, 
        Uri.parse(requestToken.getAuthenticationURL()))); 


       return authUrl; 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
      return null; 
     } 

     @Override 
     protected void onPostExecute(String s) { 


     } 

    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     Uri uri = this.getIntent().getData(); 
     Log.i("callback funziona", "ciao"); 
     if (uri != null && uri.toString().startsWith(CALLBACK_URL)) { 
      final String verifier = uri.getQueryParameter("oauth_verifier"); 

      // c 
      try { // the next line is the error's line 
       AccessToken acc = twitter.getOAuthAccessToken(requestToken, 
         verifier); 
      } catch (TwitterException e) { 

       e.printStackTrace(); 
      } 



     } 
    } 

Répondre

1

Vous créer Twitter exemple seulement après l'utilisateur clique sur le bouton, mais essayez de travailler avec elle dans la méthode onResume() où il est égal à null. Lire sur le cycle de vie de l'activité pour éviter de telles erreurs https://developer.android.com/reference/android/app/Activity.html

+0

merci beaucoup je comprends mon erreur ... mais vous pouvez me suggérer une structure de données pour éviter ce problème? – francedema

+0

regardez cela - https://github.com/syndarin/SocNetApi. Il utilise Twitter4j. Portez votre attention sur le fait que le projet a été créé avant la sortie d'Android 4.0 et que quelque part pourrait être un appel réseau dans le thread d'interface utilisateur, ce qui entraînera une exception sur Android 4.0 et supérieur. – Viacheslav

Questions connexes