ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: main Невозможно запустить действие ComponentInfo Причина: java.lang.NullPointerException
ОШИБКА: Я
FATAL EXCEPTION: main Unable to start activity ComponentInfo Caused by:
`java.lang.NullPointerException`
Я точно не знаю, почему это происходит. Это сбой приложения на линии:
listView.setOnVideoClickListener((VideoClickListener) this);
У меня есть мойlistview
объявлено в моем XML и Java - так что яЯ не уверен, что именно пошло не так в этот момент
12-04 15:37:10.563: E/AndroidRuntime(9470): FATAL EXCEPTION: main
12-04 15:37:10.563: E/AndroidRuntime(9470): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.idg.omv/com.idg.omv.ui.phone.MainActivity}: java.lang.NullPointerException
12-04 15:37:10.563: E/AndroidRuntime(9470): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110)
12-04 15:37:10.563: E/AndroidRuntime(9470): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
12-04 15:37:10.563: E/AndroidRuntime(9470): at android.app.ActivityThread.access$700(ActivityThread.java:140)
12-04 15:37:10.563: E/AndroidRuntime(9470): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237)
12-04 15:37:10.563: E/AndroidRuntime(9470): at android.os.Handler.dispatchMessage(Handler.java:99)
12-04 15:37:10.563: E/AndroidRuntime(9470): at android.os.Looper.loop(Looper.java:137)
12-04 15:37:10.563: E/AndroidRuntime(9470): at android.app.ActivityThread.main(ActivityThread.java:4921)
12-04 15:37:10.563: E/AndroidRuntime(9470): at java.lang.reflect.Method.invokeNative(Native Method)
12-04 15:37:10.563: E/AndroidRuntime(9470): at java.lang.reflect.Method.invoke(Method.java:511)
12-04 15:37:10.563: E/AndroidRuntime(9470): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
12-04 15:37:10.563: E/AndroidRuntime(9470): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
12-04 15:37:10.563: E/AndroidRuntime(9470): at dalvik.system.NativeStart.main(Native Method)
12-04 15:37:10.563: E/AndroidRuntime(9470): Caused by: java.lang.NullPointerException
12-04 15:37:10.563: E/AndroidRuntime(9470): at com.idg.omv.ui.phone.MainActivity.onCreate(MainActivity.java:164)
12-04 15:37:10.563: E/AndroidRuntime(9470): at android.app.Activity.performCreate(Activity.java:5206)
12-04 15:37:10.563: E/AndroidRuntime(9470): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
12-04 15:37:10.563: E/AndroidRuntime(9470): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074)
12-04 15:37:10.563: E/AndroidRuntime(9470): ... 11 more
ДЖАВА:public class MainActivity extends YouTubeBaseActivity implements
YouTubePlayer.OnInitializedListener,
YouTubeThumbnailView.OnInitializedListener {
// A reference to our list that will hold the video details
private VideosListView listView;
private ActionBarDrawerToggle actionBarDrawerToggle;
private ActionBarDrawerToggle mDrawerToggle;
public static final String API_KEY = "AIzaSyC0Te2pyooXzuyLaE6_SsFlITKCwjj55fI";
public static final String VIDEO_ID = "o7VVHhK9zf0";
public static final String VIDEO1_ID = "xVHHJqntuXI";
public static final String VIDEO2_ID = "YWteQj_q3Ro";
public static final String VIDEO3_ID = "83ZgtqTw-mI";
public static final String VIDEO4_ID = "n5wMza29JwI";
private YouTubeThumbnailLoader youTubeThumbnailLoader;
private DrawerLayout drawerLayout;
private ListView drawerListView;
private String[] drawerListViewItems;
ScrollView mainScrollView;
Button fav_up_btn1;
Button fav_dwn_btn1;
private YouTubePlayerView youTubePlayerView;
String TAG = "DEBUG THIS";
private YouTubePlayer youTubePlayer;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ActionBar actionBar = getActionBar();
ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
ImagePagerAdapter adapter = new ImagePagerAdapter();
viewPager.setAdapter(adapter);
actionBar.setCustomView(R.layout.actionbar_custom_view_home);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowCustomEnabled(true);
// get list items from strings.xml
drawerListViewItems = getResources().getStringArray(R.array.items);
// get ListView defined in activity_main.xml
drawerListView = (ListView) findViewById(R.id.left_drawer);
// Set the adapter for the list view
drawerListView.setAdapter(new ArrayAdapter(this,
R.layout.drawer_listview_item, drawerListViewItems));
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
actionBarDrawerToggle = new ActionBarDrawerToggle(this, /* host Activity */
drawerLayout, /* DrawerLayout object */
R.drawable.ic_drawer, /* nav drawer icon to replace 'Up' caret */
R.string.drawer_open, /* "open drawer" description */
R.string.drawer_close /* "close drawer" description */
);
drawerLayout.setDrawerListener(actionBarDrawerToggle);
getActionBar().setDisplayHomeAsUpEnabled(true);
drawerLayout.setDrawerShadow(R.drawable.drawer_shadow,
GravityCompat.START);
youTubePlayerView = (YouTubePlayerView) findViewById(R.id.youtubeplayerview);
youTubePlayerView.initialize(API_KEY, this);
mainScrollView = (ScrollView) findViewById(R.id.groupScrollView);
fav_up_btn1 = (Button) findViewById(R.id.fav_up_btn1);
fav_up_btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean favIsUp = fav_up_btn1
.getBackground()
.getConstantState()
.equals(getResources().getDrawable(
R.drawable.fav_up_btn1).getConstantState());
fav_up_btn1
.setBackgroundResource(favIsUp ? R.drawable.fav_dwn_btn1
: R.drawable.fav_up_btn1);
}
});
listView = (VideosListView) findViewById(R.id.videosListView);
listView.setOnVideoClickListener((VideoClickListener) this);
new GetYouTubeUserVideosTask(responseHandler, "blundellp").execute();
}
XML:
VideoListView.javapublic class VideosListView extends ListView implements android.widget.AdapterView.OnItemClickListener {
private List videos;
private VideoClickListener videoClickListener;
public VideosListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public VideosListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public VideosListView(Context context) {
super(context);
}
public void setVideos(List videos){
this.videos = videos;
VideosAdapter adapter = new VideosAdapter(getContext(), videos);
setAdapter(adapter);
// When the videos are set we also set an item click listener to the list
// this will callback to our custom list whenever an item it pressed
// it will tell us what position in the list is pressed
setOnItemClickListener(this);
}
// Calling this method sets a listener to the list
// Whatever class is passed in will be notified when the list is pressed
// (The class that is passed in just has to 'implement VideoClickListener'
// meaning is has the methods available we want to call)
public void setOnVideoClickListener(VideoClickListener l) {
videoClickListener = l;
}
@Override
public void setAdapter(ListAdapter adapter) {
super.setAdapter(adapter);
}
// When we receive a notification that a list item was pressed
// we check to see if a video listener has been set
// if it has we can then tell the listener 'hey a video has just been clicked' also passing the video
@Override
public void onItemClick(AdapterView adapter, View v, int position, long id) {
if(videoClickListener != null){
videoClickListener.onVideoClicked(videos.get(position));
}
}
}