0

프로젝트에서 작업 중이며 버튼을 클릭하여 다른 액티비티를 여는 경우 충돌이 발생했을 때이 메시지가 나타납니다. 나는 아마 그것이 단순한 무엇인가 알고있다. 그러나 나는 내가 잘못했던 것을 발견 할 수 없다.Android Studio : 액티비티를 시작할 수 없습니다. java.lang.NullPointerException

여기가 추락했을 때 나에게주는 메시지입니다. 여기

"java.lang.RuntimeException: Unable to start activity ComponentInfo{ualr.capstone.arkansasfloater/ualr.capstone.arkansasfloater.RiverTweet}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference" 

이것은 XML 코드

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="16dp" 
android:paddingLeft="16dp" 
android:paddingRight="16dp" 
android:paddingTop="16dp" 
tools:context="ualr.capstone.arkansasfloater.MainActivity"> 

<TextView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:text="Welcome! This app provides water height data for Arkansas 
    Rivers, press a button to continue" 
    android:textAlignment="center" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentStart="true"/> 

<Button 
    android:id="@+id/continuebutton" 
    android:layout_width="150dp" 
    android:layout_height="75dp" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:onClick="click" 
    android:text="River Info" /> 

<Button 
    android:id="@+id/Rtweets" 
    android:layout_width="150dp" 
    android:layout_height="75dp" 
    android:layout_below="@+id/continuebutton" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="55dp" 
    android:text="River Tweets"/> 

</RelativeLayout> 

이이 그것을 개방해야 활동이

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.Button; 

public class MainActivity extends AppCompatActivity { 


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


    Button welcome = (Button) findViewById(R.id.continuebutton); 
    Button tweets = (Button) findViewById(R.id.Rtweets); 

    welcome.setOnClickListener(new View.OnClickListener(){ 

     public void onClick(View v){ 

      Intent i = new Intent(v.getContext(), RList.class); 
      startActivity(i); 
     } 



    }); 

    tweets.setOnClickListener(new View.OnClickListener(){ 

     public void onClick(View v){ 

      Intent intent = new Intent(MainActivity.this, RiverTweet.class); 
      startActivity(intent); 
     } 



    }); 




} 
} 

메인 활동을하다 매니페스트

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="ualr.capstone.arkansasfloater"> 

    <uses-permission android:name="android.permission.INTERNET"/> 

    <application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:roundIcon="@mipmap/ic_launcher_round" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN"/> 

      <category android:name="android.intent.category.LAUNCHER"/> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".RList" 
     android:parentActivityName=".MainActivity"> 
    </activity> 
    <activity 
     android:name=".InfoActivity" 
     android:parentActivityName=".RList"> 
    </activity> 

    <activity android:name=".RiverTweet"> 
    </activity> 
</application> 

</manifest> 

입니다 .

import java.util.ArrayList; 
import java.util.List; 

import twitter4j.Query; 
import twitter4j.QueryResult; 
import twitter4j.Twitter; 
import twitter4j.TwitterFactory; 
import twitter4j.auth.OAuth2Token; 
import twitter4j.conf.ConfigurationBuilder; 
import android.app.Activity; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ListView; 
import android.widget.Toast; 

public class RiverTweet extends Activity { 
Button bigpiney; 
Button buffalo; 
Button ouachita; 
Button white; 
Button spring; 
private final String TWIT_CONS_KEY = "my cons"; 
private final String TWIT_CONS_SEC_KEY = 
"my secret"; 
ListView list; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    spring = (Button)findViewById(R.id.spring); 
    white = (Button) findViewById(R.id.white); 
    ouachita = (Button) findViewById(R.id.ouachita); 
    bigpiney = (Button) findViewById(R.id.bigpiney); 
    buffalo = (Button) findViewById(R.id.buffalo); 
    list = (ListView) findViewById(R.id.list); 

    spring.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      new SearchOnTwitter().execute(spring.getText().toString()); 
     } 
    }); 

    white.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      new SearchOnTwitter().execute(white.getText().toString()); 
     } 
    }); 

    ouachita.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      new SearchOnTwitter().execute(ouachita.getText().toString()); 
     } 
    }); 

    bigpiney.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      new SearchOnTwitter().execute(bigpiney.getText().toString()); 
     } 
    }); 

    buffalo.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      new SearchOnTwitter().execute(buffalo.getText().toString()); 
     } 
    }); 
} 

class SearchOnTwitter extends AsyncTask<String, Void, Integer> { 
    ArrayList<Tweet> tweets; 
    final int SUCCESS = 0; 
    final int FAILURE = SUCCESS + 1; 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
    } 

    @Override 
    protected Integer doInBackground(String... params) { 
     try { 
      ConfigurationBuilder builder = new ConfigurationBuilder(); 
      builder.setApplicationOnlyAuthEnabled(true); 
      builder.setOAuthConsumerKey(TWIT_CONS_KEY); 
      builder.setOAuthConsumerSecret(TWIT_CONS_SEC_KEY); 

      OAuth2Token token = new 
TwitterFactory(builder.build()).getInstance().getOAuth2Token(); 

      builder = new ConfigurationBuilder(); 
      builder.setApplicationOnlyAuthEnabled(true); 
      builder.setOAuthConsumerKey(TWIT_CONS_KEY); 
      builder.setOAuthConsumerSecret(TWIT_CONS_SEC_KEY); 
      builder.setOAuth2TokenType(token.getTokenType()); 
      builder.setOAuth2AccessToken(token.getAccessToken()); 

      Twitter twitter = new 
TwitterFactory(builder.build()).getInstance(); 

      Query query = new Query(params[0]); 
      // YOu can set the count of maximum records here 
      query.setCount(50); 
      QueryResult result; 
      result = twitter.search(query); 
      List<twitter4j.Status> tweets = result.getTweets(); 
      StringBuilder str = new StringBuilder(); 
      if (tweets != null) { 
       this.tweets = new ArrayList<Tweet>(); 
       for (twitter4j.Status tweet : tweets) { 
        str.append("@" + tweet.getUser().getScreenName() + " - " 
+ tweet.getText() + "\n"); 
        System.out.println(str); 
        this.tweets.add(new Tweet("@" + 
tweet.getUser().getScreenName(), tweet.getText())); 
       } 
       return SUCCESS; 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     return FAILURE; 
    } 

    @Override 
    protected void onPostExecute(Integer result) { 
     super.onPostExecute(result); 
     if (result == SUCCESS) { 
      list.setAdapter(new TweetAdapter(RiverTweet.this, tweets)); 
     } else { 
      Toast.makeText(RiverTweet.this, getString(R.string.error), 
Toast.LENGTH_LONG).show(); 
     } 
    } 
} 
} 

첫 번째 버튼 내가 트위터의 코드에 넣어 후 두 번째가 아닌, 잘 작동 (I가 내장되어 다른 응용 프로그램에서 복사 붙여 넣기.) 덕분에 다시 도움을.

+4

에 의해 찾을 때 당신의 버튼이 null 인 이유

setContentView(R.layout.activity_main); 

activity_main'은 'RiverTweet'의 레이아웃이 아닙니다 –

답변

5

당신은 당신의 두 번째 Activity (RiverTweet)의 첫 번째 활동의 레이아웃을 사용하고 있습니다 : 당신이`ID : 아마

+0

감사합니다! 나는 그게 뭔가 간단한 때 항상 싫어! –