Aktivität kann nicht instanziiert werden ComponentInfo kann keine Klasse instanziieren

Vielen Dank im Voraus an alle, die sich mit dieser Frage befassen, insbesondere an diejenigen, die versuchen, sie zu beantworten! Diese Website hat mir sehr geholfen!

Momentan tritt in meiner Android 4.2.2-App der folgende Fehler auf. Unten ist der Logcat:

09-09 01:14:27.008: D/dalvikvm(9008): newInstance failed: p0 i0 [0 a1
09-09 01:14:27.008: D/AndroidRuntime(9008): Shutting down VM
09-09 01:14:27.008: W/dalvikvm(9008): threadid=1: thread exiting with uncaught exception (group=0x41173ac8)
09-09 01:14:27.018: E/AndroidRuntime(9008): FATAL EXCEPTION: main
09-09 01:14:27.018: E/AndroidRuntime(9008): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.pocketbotanist/com.pocketbotanist.HomeScreen}: java.lang.InstantiationException: can't instantiate class com.pocketbotanist.HomeScreen
09-09 01:14:27.018: E/AndroidRuntime(9008):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2173)
09-09 01:14:27.018: E/AndroidRuntime(9008):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2297)
09-09 01:14:27.018: E/AndroidRuntime(9008):     at android.app.ActivityThread.access$700(ActivityThread.java:152)
09-09 01:14:27.018: E/AndroidRuntime(9008):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1282)
09-09 01:14:27.018: E/AndroidRuntime(9008):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-09 01:14:27.018: E/AndroidRuntime(9008):     at android.os.Looper.loop(Looper.java:137)
09-09 01:14:27.018: E/AndroidRuntime(9008):     at android.app.ActivityThread.main(ActivityThread.java:5328)
09-09 01:14:27.018: E/AndroidRuntime(9008):     at java.lang.reflect.Method.invokeNative(Native Method)
09-09 01:14:27.018: E/AndroidRuntime(9008):     at java.lang.reflect.Method.invoke(Method.java:511)
09-09 01:14:27.018: E/AndroidRuntime(9008):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
09-09 01:14:27.018: E/AndroidRuntime(9008):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
09-09 01:14:27.018: E/AndroidRuntime(9008):     at dalvik.system.NativeStart.main(Native Method)
09-09 01:14:27.018: E/AndroidRuntime(9008): Caused by: java.lang.InstantiationException: can't instantiate class com.pocketbotanist.HomeScreen
09-09 01:14:27.018: E/AndroidRuntime(9008):     at java.lang.Class.newInstanceImpl(Native Method)
09-09 01:14:27.018: E/AndroidRuntime(9008):     at java.lang.Class.newInstance(Class.java:1319)
09-09 01:14:27.018: E/AndroidRuntime(9008):     at android.app.Instrumentation.newActivity(Instrumentation.java:1071)
09-09 01:14:27.018: E/AndroidRuntime(9008):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2164)
09-09 01:14:27.018: E/AndroidRuntime(9008):     ... 11 more

Ich habe versucht, ein Projekt zu bereinigen, habe versucht, Android Private Library zu reparieren, das ich woanders gesehen habe, und habe meine Paketnamen überprüft (es sei denn, ich vermisse etwas, was ich sein könnte!). Hier ist homescreen.java:

package com.pocketbotanist;

import java.io.File;

import android.app.ListActivity;
import android.app.LoaderManager;
import android.content.Intent;
import android.content.Loader;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Spinner;

import com.pocketbotanist.contentprovider.MyEntryContentProvider;
import com.pocketbotanist.database.EntryTable;



public abstract class HomeScreen extends ListActivity implements LoaderManager.LoaderCallbacks<Cursor> {

    private static final int DELETE_ID = Menu.FIRST + 1;
    // private Cursor cursor;
    private SimpleCursorAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home_screen);
        this.getListView().setDividerHeight(2);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

        //Initial folder creation code
        File appDirectory = new File(Environment.getExternalStorageDirectory().toString()+"/Pocket Botanist/");
        if (!appDirectory.exists()){
            appDirectory.mkdir();
        }

        //Drop down list code
        Spinner spinner = (Spinner) findViewById(R.id.action_spinner);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.action_list, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);


        fillData();
        //View listItem=(View)((Menu) this.getListView()).getItem(0);
        registerForContextMenu(getListView());
        if (adapter.isEmpty())
            System.out.println("IT'S EMPTY");
        String[] projection = { EntryTable.COLUMN_CUSTOMID };
        long info =  adapter.getItemId(0);
        Uri uri = Uri.parse(MyEntryContentProvider.CONTENT_URI + "/"
                + info);
        Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
        cursor.moveToFirst();
        System.out.println((cursor.getString(cursor
                    .getColumnIndexOrThrow(EntryTable.COLUMN_CUSTOMID))));
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }


    @Override
    public boolean onContextItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case DELETE_ID:
            String[] projection = { EntryTable.COLUMN_PHOTOS };
            AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
            .getMenuInfo();
            Uri uri = Uri.parse(MyEntryContentProvider.CONTENT_URI + "/"
                    + info.id);
            Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
            cursor.moveToFirst();
            File temp = new File(cursor.getString(cursor
                    .getColumnIndexOrThrow(EntryTable.COLUMN_PHOTOS)));
            if(temp.exists()){
                File[] files = temp.listFiles();
                for(int i = 0; i < files.length; i++){
                    files[i].delete();
                }
                temp.delete();
            }
            getContentResolver().delete(uri, null, null);
            fillData();
            return true;
        }

        return super.onContextItemSelected(item);

    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_home_screen, menu);
        //SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle item selection
        switch (item.getItemId()) {
        case R.id.menu_settings:
            settCall();
            return true;
        case R.id.menu_map:
            map1_3();
            return true;
        case R.id.menu_edit:
            entryScreen("New Entry");
            return true;
        default:
            return super.onOptionsItemSelected(item);
        }
    }

    public void entryScreen(String t){
        Intent intent = new Intent(this, EntryScreen.class);
        intent.putExtra("passer", t);
        startActivity(intent);
    }

    public void settCall(){
        Intent sett = new Intent(this,SettingsActivity.class);
        startActivity(sett);
    }

    public void map1_3(){

        Intent map13 = new Intent(this,Entrymap_1_3.class);
        startActivity(map13);
    }


    // Opens the second activity if an entry is clicked
    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
        Intent i = new Intent(this, EntryScreen.class);
        Uri itemUri = Uri.parse(MyEntryContentProvider.CONTENT_URI + "/" + id);
        i.putExtra(MyEntryContentProvider.CONTENT_ITEM_TYPE, itemUri);

        startActivity(i);
    }

    //@Override
    //When we create the loader we're going to get the projection for the ID, customID, species name, and time columns
    //(insures that these exist within the database)
    //then we create our cursor loader which will be responsible for loading data from the database
    //using the projection and our content provider
    /* public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
        String[] projection = { EntryTable.COLUMN_ID, EntryTable.COLUMN_CUSTOMID, EntryTable.COLUMN_SPECIES, EntryTable.COLUMN_TIME, EntryTable.COLUMN_PHOTOS, EntryTable.COLUMN_PHOTO };
        CursorLoader cursor = new CursorLoader(this,
                MyEntryContentProvider.CONTENT_URI, projection, null, null, null);
        if (cursor != null) {
            ((Cursor) cursor).moveToFirst();
        }

        return cursor;
    } */

    private void fillData() {

        // Fields from the database (projection)
        String[] from = new String[] { EntryTable.COLUMN_CUSTOMID, EntryTable.COLUMN_SPECIES , EntryTable.COLUMN_TIME, EntryTable.COLUMN_PHOTO};
        // Fields on the UI to which we map
        int[] to = new int[] { R.id.customidlabel, R.id.namelabel, R.id.timelabel, R.id.imageView };

        getLoaderManager().initLoader(1, null, this);       //changed to 1
        adapter = new SimpleCursorAdapter(this, R.layout.list_row, null, from, to, 0);

        setListAdapter(adapter);
    }

    @Override
      public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        menu.add(0, DELETE_ID, 0, R.string.menu_delete);
      }


    @Override
    public void onLoadFinished(Loader<Cursor> arg0, Cursor data) {
        adapter.swapCursor(data);       
    }

    @Override
    public void onLoaderReset(Loader<Cursor> arg0) {
        adapter.swapCursor(null);
    }

}

Ich verstehe, dass das Problem möglicherweise hier liegt. Hier ist auch meine AndroidManifest.xml-Datei:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.pocketbotanist"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="11"
        android:targetSdkVersion="18" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true"/>

    <permission
        android:name="com.pocketbotanist.permission.MAPS_RECEIVE"
        android:protectionLevel="signature"/>
<uses-permission android:name="com.pocketbotanist.permission.MAPS_RECEIVE"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        android:configChanges="keyboardHidden|orientation" >
        <activity
            android:name="com.pocketbotanist.HomeScreen"
            android:label="@string/main" >

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.pocketbotanist.EntryScreen"
            android:label="@string/title_activity_entry_screen"
            android:windowSoftInputMode="stateHidden" 
            >
        </activity>
        <activity
            android:name="com.pocketbotanist.SettingsActivity"
            android:label="@string/title_activity_settings" >
        </activity>
        <activity
            android:name="com.pocketbotanist.ManualLocationActivity"
            android:label="@string/title_activity_manual_location" >
        </activity>
        <activity
            android:name="com.pocketbotanist.Entrymap_1_3"
            android:label="@string/title_activity_entrymap_1_3" >
        </activity>
        <activity
            android:name="com.pocketbotanist.Location_2_3"
            android:label="@string/title_location_2_3" >
        </activity>
        <activity
            android:name="com.pocketbotanist.Mapfragmentpreview"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:label="@string/title_activity_mapfragmentpreview"
            android:theme="@style/FullscreenTheme" >
        </activity>

         <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="(removing key for security reasons)" />
         <uses-library  
       android:name="com.google.android.maps"  
       android:required="true" />

         <provider
      android:name="com.pocketbotanist.contentprovider.MyEntryContentProvider"
      android:authorities="com.pocketbotanist.contentprovider" 
      android:exported="false">
   </provider>
    </application>

</manifest>

Hat jemand irgendwelche Ideen / Vorschläge? Nochmals vielen Dank im Voraus!

Antworten auf die Frage(3)

Ihre Antwort auf die Frage