package pl.project.promiseme;

import java.util.Date;
import java.util.List;

import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterFactory;
import twitter4j.auth.AccessToken;
import twitter4j.auth.OAuthAuthorization;
import twitter4j.auth.RequestToken;
import twitter4j.conf.Configuration;
import twitter4j.conf.ConfigurationBuilder;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class SampleTwitAppActivity extends MainActivity {
 public static final String TAG = "SampleTwitAppActivity";
 

 TextView nameText;
 Button connectBtn;
 StatusListView statusList;
 StatusListAdapter statusAdapter;

 Button writeBtn;
 EditText writeInput;
 
    public void onCreate(Bundle twit) {
        super.onCreate(twit);
        setContentView(R.layout.twit_main);

        connectBtn = (Button) findViewById(R.id.connectBtn);
        connectBtn.setOnClickListener(new OnClickListener() {
         public void onClick(View v) {
          connect();
         }
        });

       
        nameText = (TextView) findViewById(R.id.nameText);


        statusList = (StatusListView) findViewById(R.id.statusList);
        statusAdapter = new StatusListAdapter(this);
        statusList.setAdapter(statusAdapter);
        statusList.setOnDataSelectionListener(new OnDataSelectionListener() {
         public void onDataSelected(AdapterView parent, View v, int position, long id) {
    Status curItem = (Status) statusAdapter.getItem(position);
    String curText = curItem.getText();

    Toast.makeText(getApplicationContext(), "Selected : " + curText, 1000).show();
   }
  });

        writeBtn = (Button) findViewById(R.id.writeBtn);
        writeBtn.setOnClickListener(new OnClickListener() {
         public void onClick(View v) {
          String statusText = writeInput.getText().toString();
          if (statusText.length() < 1) {
           Toast.makeText(getApplicationContext(), "얘야 먼가 치고 눌러야 하지 않겠니? ;D", 1000).show();
           return;
          }

          updateStatus(statusText);
         }
        });

        writeInput = (EditText) findViewById(R.id.writeInput);

    }


    private void updateStatus(String statusText) {
     try {
      Status status = BasicInfo.TwitInstance.updateStatus(statusText);
      Date curDate = status.getCreatedAt();

      Toast.makeText(getApplicationContext(), "갈아엎었어. 수공 :0" + BasicInfo.DateFormat.format(curDate), 1000).show();

      showUserTimeline();

     } catch(Exception ex) {
      ex.printStackTrace();
     }

    }


    private void connect() {
  Log.d(TAG, "connect() called.");

  if (BasicInfo.TwitLogin) {
   Log.d(TAG, "twitter already logged in.");
   Toast.makeText(getBaseContext(), "twitter already logged in.", Toast.LENGTH_LONG).show();

   try {
    ConfigurationBuilder builder = new ConfigurationBuilder();

    builder.setOAuthAccessToken(BasicInfo.TWIT_KEY_TOKEN);
    builder.setOAuthAccessTokenSecret(BasicInfo.TWIT_KEY_TOKEN_SECRET);
    builder.setOAuthConsumerKey(BasicInfo.TWIT_CONSUMER_KEY);
    builder.setOAuthConsumerSecret(BasicInfo.TWIT_CONSUMER_SECRET);

    Configuration config = builder.build();
    TwitterFactory tFactory = new TwitterFactory(config);
    BasicInfo.TwitInstance = tFactory.getInstance();

    Toast.makeText(getBaseContext(), "twitter connected.", Toast.LENGTH_LONG).show();

      } catch (Exception ex) {
    ex.printStackTrace();
   }

   showUserTimeline();

  } else {

      try {
    ConfigurationBuilder builder = new ConfigurationBuilder();
    builder.setDebugEnabled(true);
    builder.setOAuthConsumerKey(BasicInfo.TWIT_CONSUMER_KEY);
    builder.setOAuthConsumerSecret(BasicInfo.TWIT_CONSUMER_SECRET);

    TwitterFactory factory = new TwitterFactory(builder.build());
    Twitter mTwit = factory.getInstance();
    RequestToken mRequestToken = mTwit.getOAuthRequestToken();
    String outToken = mRequestToken.getToken();
    String outTokenSecret = mRequestToken.getTokenSecret();

    Log.d(TAG, "Request Token : " + outToken + ", " + outTokenSecret);
    Log.d(TAG, "AuthorizationURL : " + mRequestToken.getAuthorizationURL());

    BasicInfo.TwitInstance = mTwit;
    BasicInfo.TwitRequestToken = mRequestToken;

    Intent intent = new Intent(this, TwitLogin.class);
    intent.putExtra("authUrl", mRequestToken.getAuthorizationURL());
    startActivityForResult(intent, BasicInfo.REQ_CODE_TWIT_LOGIN);

      } catch (Exception ex) {
    ex.printStackTrace();
   }

  }

    }


 protected void onActivityResult(int requestCode, int resultCode, Intent resultIntent) {
  super.onActivityResult(requestCode, resultCode, resultIntent);

  if (resultCode == RESULT_OK) {
   if (requestCode == BasicInfo.REQ_CODE_TWIT_LOGIN) {
    try {
     Twitter mTwit = BasicInfo.TwitInstance;

     AccessToken mAccessToken = mTwit.getOAuthAccessToken(BasicInfo.TwitRequestToken, resultIntent.getStringExtra("oauthVerifier"));

     BasicInfo.TwitLogin = true;
     BasicInfo.TWIT_KEY_TOKEN = mAccessToken.getToken();
     BasicInfo.TWIT_KEY_TOKEN_SECRET = mAccessToken.getTokenSecret();

     BasicInfo.TwitAccessToken = mAccessToken;

     BasicInfo.TwitScreenName = mTwit.getScreenName();

     Toast.makeText(getBaseContext(), "Twitter connection succeeded : " + BasicInfo.TWIT_KEY_TOKEN, Toast.LENGTH_LONG).show();

     showUserTimeline();

    } catch (Exception ex) {
     ex.printStackTrace();
    }
   }
  }
 }

 private void showUserTimeline() {
  Log.d(TAG, "showUserTimeline() called.");

  connectBtn.setVisibility(View.GONE);
        nameText.setVisibility(View.VISIBLE);
        nameText.setText(BasicInfo.TwitScreenName);

  // get user timeline
  getUserTimeline();

 }


 private void getUserTimeline() {
  Twitter mTwit = BasicInfo.TwitInstance;

  try {
   List<Status> statuses = mTwit.getUserTimeline();

   statusAdapter.setListItems(statuses);
   statusAdapter.notifyDataSetChanged();

  } catch(Exception ex) {
   ex.printStackTrace();
  }

 }


 protected void onPause() {
  super.onPause();

  saveProperties();
 }

 protected void onResume() {
  super.onResume();

  loadProperties();
 }

 private void saveProperties() {
  SharedPreferences pref = getSharedPreferences("TWIT", MODE_PRIVATE);
  SharedPreferences.Editor editor = pref.edit();

  editor.putBoolean("TwitLogin", BasicInfo.TwitLogin);
  editor.putString("TWIT_KEY_TOKEN", BasicInfo.TWIT_KEY_TOKEN);
  editor.putString("TWIT_KEY_TOKEN_SECRET", BasicInfo.TWIT_KEY_TOKEN_SECRET);

  editor.commit();
 }

 private void loadProperties() {
  SharedPreferences pref = getSharedPreferences("TWIT", MODE_PRIVATE);

  BasicInfo.TwitLogin = pref.getBoolean("TwitLogin", false);
  BasicInfo.TWIT_KEY_TOKEN = pref.getString("TWIT_KEY_TOKEN", "");
  BasicInfo.TWIT_KEY_TOKEN_SECRET = pref.getString("TWIT_KEY_TOKEN_SECRET", "");

 }
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  getMenuInflater().inflate(R.menu.activity_main, menu);
  return true;
 }
}

 

위에 .java는 만들어진 코드고요

manifest.xml을 최근에 고쳤어도....

fatal exception(main), unable to start componentInfo.. 이런문제가 생깁니다

 

스택 오버플로우일지도 모르는데 진짜 원인이 무엇인가요?