0

The app crashes and is unable to start. The code compiles without error but crashes as soon as i run the emulator to attempt to test the application. Any help at all will be greatly appreciated!

This is my MainActivity.java

package com.overworldinnovations.datatool;

import info.datatool.tabsswipe.adapter.TabsPagerAdapter;
import android.annotation.TargetApi;
import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.FragmentTransaction;
import android.os.Build;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;


@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public class MainActivity extends FragmentActivity implements
    ActionBar.TabListener {

private ViewPager viewPager;
private TabsPagerAdapter mAdapter;
private ActionBar actionBar;
// Tab titles
private String[] tabs = { "Convert", "Data Ranges", "" };
{

    // Initialization
    viewPager = (ViewPager) findViewById(R.id.pager);
    actionBar = getActionBar();
    mAdapter = new TabsPagerAdapter(getSupportFragmentManager());

    viewPager.setAdapter(mAdapter);
    actionBar.setHomeButtonEnabled(false);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);        

    // Adding Tabs
    for (String tab_name : tabs) {
        actionBar.addTab(actionBar.newTab().setText(tab_name)
                .setTabListener(this));
    }
}

@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
    // TODO Auto-generated method stub

}

@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
    // TODO Auto-generated method stub

}

@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
    // TODO Auto-generated method stub

}
}

This is my CatLog after attempting to run the application and it crashes

09-14 17:48:20.364: E/AndroidRuntime(1168): FATAL EXCEPTION: main
09-14 17:48:20.364: E/AndroidRuntime(1168): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.overworldinnovations.datatool/com.overworldinnovations.datatool.MainActivity}: java.lang.NullPointerException
09-14 17:48:20.364: E/AndroidRuntime(1168):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2106)
09-14 17:48:20.364: E/AndroidRuntime(1168):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
09-14 17:48:20.364: E/AndroidRuntime(1168):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
09-14 17:48:20.364: E/AndroidRuntime(1168):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
09-14 17:48:20.364: E/AndroidRuntime(1168):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-14 17:48:20.364: E/AndroidRuntime(1168):     at android.os.Looper.loop(Looper.java:137)
09-14 17:48:20.364: E/AndroidRuntime(1168):     at android.app.ActivityThread.main(ActivityThread.java:5041)
09-14 17:48:20.364: E/AndroidRuntime(1168):     at java.lang.reflect.Method.invokeNative(Native Method)
09-14 17:48:20.364: E/AndroidRuntime(1168):     at java.lang.reflect.Method.invoke(Method.java:511)
09-14 17:48:20.364: E/AndroidRuntime(1168):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
09-14 17:48:20.364: E/AndroidRuntime(1168):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
09-14 17:48:20.364: E/AndroidRuntime(1168):     at dalvik.system.NativeStart.main(Native Method)
09-14 17:48:20.364: E/AndroidRuntime(1168): Caused by: java.lang.NullPointerException
09-14 17:48:20.364: E/AndroidRuntime(1168):     at android.app.Activity.findViewById(Activity.java:1839)
09-14 17:48:20.364: E/AndroidRuntime(1168):     at com.overworldinnovations.datatool.MainActivity.<init>(MainActivity.java:25)
09-14 17:48:20.364: E/AndroidRuntime(1168):     at java.lang.Class.newInstanceImpl(Native Method)
09-14 17:48:20.364: E/AndroidRuntime(1168):     at java.lang.Class.newInstance(Class.java:1319)
09-14 17:48:20.364: E/AndroidRuntime(1168):     at android.app.Instrumentation.newActivity(Instrumentation.java:1054)
09-14 17:48:20.364: E/AndroidRuntime(1168):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
09-14 17:48:20.364: E/AndroidRuntime(1168):     ... 11 more
09-14 17:53:20.504: I/Process(1168): Sending signal. PID: 1168 SIG: 9
KangarooRIOT
  • 691
  • 1
  • 7
  • 25
  • When you are posting stack traces, it always helps if you identify the line(s) of your code where the exception is thrown. Please point out which is line 25 of MainActivity.java – Ted Hopp Sep 14 '14 at 17:59
  • i apologize. This is the bit of code that starts at line 25----- // Initialization viewPager = (ViewPager) findViewById(R.id.pager); actionBar = getActionBar(); mAdapter = new TabsPagerAdapter(getSupportFragmentManager()); viewPager.setAdapter(mAdapter); actionBar.setHomeButtonEnabled(false); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); – KangarooRIOT Sep 14 '14 at 18:03

1 Answers1

4

Move this initializer block to onCreate() in your activity:

{

    // Initialization

    ...
}

Instance initialization (<init> in stacktrace) is too early to call activity methods such as findViewById().


Since you don't yet have an onCreate() and need one, you can turn the initializer into one. Replace the opening { with something like

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.some_layout_id);

    // Initialization

    ...

where some_layout_id refers to the XML layout you want to use as the content view for this activity.

laalto
  • 150,114
  • 66
  • 286
  • 303