2013-10-06 2 views
2

я создаю виджет, но когда я запускаю его я получаю эту ошибку в консоли:java.lang.RuntimeException: Невозможно Инстанцировать Активность в ComponentInfo

[2013-10-05 22:02:56 - AwesomeFileBuilderWidget] ------------------------------ 
[2013-10-05 22:02:56 - AwesomeFileBuilderWidget] Android Launch! 
[2013-10-05 22:02:56 - AwesomeFileBuilderWidget] adb is running normally. 
[2013-10-05 22:02:56 - AwesomeFileBuilderWidget] No Launcher activity found! 
[2013-10-05 22:02:56 - AwesomeFileBuilderWidget] The launch will only sync the application package on the device! 
[2013-10-05 22:02:56 - AwesomeFileBuilderWidget] Performing sync 
[2013-10-05 22:02:56 - AwesomeFileBuilderWidget] Automatic Target Mode: Unable to detect device compatibility. Please select a target device. 
[2013-10-05 22:03:00 - AwesomeFileBuilderWidget] Uploading AwesomeFileBuilderWidget.apk onto device 'HT18YMA05067' 
[2013-10-05 22:03:00 - AwesomeFileBuilderWidget] Installing AwesomeFileBuilderWidget.apk... 
[2013-10-05 22:03:04 - AwesomeFileBuilderWidget] Success! 
[2013-10-05 22:03:04 - AwesomeFileBuilderWidget] \AwesomeFileBuilderWidget\bin\AwesomeFileBuilderWidget.apk installed on device 
[2013-10-05 22:03:04 - AwesomeFileBuilderWidget] Done! 

Но виджет устанавливает штраф на устройстве и показывает вверх на экране выбора виджетов.

Вторая ошибка возникает, когда я пытаюсь поместить мой виджет на рабочий стол. Я получаю эту ошибку в LogCat:

10-05 21:51:45.485: D/AndroidRuntime(3557): Shutting down VM 
10-05 21:51:45.485: W/dalvikvm(3557): threadid=1: thread exiting with uncaught exception (group=0x4001d5a0) 
10-05 21:51:45.505: E/AndroidRuntime(3557): FATAL EXCEPTION: main 
10-05 21:51:45.505: E/AndroidRuntime(3557): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.awesomefilebuilderwidget/com.example.awesomefilebuilderwidget.WidgetConfig}: java.lang.ClassNotFoundException: com.example.awesomefilebuilderwidget.WidgetConfig in loader dalvik.system.PathClassLoader[/data/app/com.example.awesomefilebuilderwidget-1.apk] 
10-05 21:51:45.505: E/AndroidRuntime(3557):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1746) 
10-05 21:51:45.505: E/AndroidRuntime(3557):  at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:1854) 
10-05 21:51:45.505: E/AndroidRuntime(3557):  at android.app.ActivityThread.access$1500(ActivityThread.java:135) 
10-05 21:51:45.505: E/AndroidRuntime(3557):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1041) 
10-05 21:51:45.505: E/AndroidRuntime(3557):  at android.os.Handler.dispatchMessage(Handler.java:99) 
10-05 21:51:45.505: E/AndroidRuntime(3557):  at android.os.Looper.loop(Looper.java:150) 
10-05 21:51:45.505: E/AndroidRuntime(3557):  at android.app.ActivityThread.main(ActivityThread.java:4333) 
10-05 21:51:45.505: E/AndroidRuntime(3557):  at java.lang.reflect.Method.invokeNative(Native Method) 
10-05 21:51:45.505: E/AndroidRuntime(3557):  at java.lang.reflect.Method.invoke(Method.java:507) 
10-05 21:51:45.505: E/AndroidRuntime(3557):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
10-05 21:51:45.505: E/AndroidRuntime(3557):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
10-05 21:51:45.505: E/AndroidRuntime(3557):  at dalvik.system.NativeStart.main(Native Method) 
10-05 21:51:45.505: E/AndroidRuntime(3557): Caused by: java.lang.ClassNotFoundException: com.example.awesomefilebuilderwidget.WidgetConfig in loader dalvik.system.PathClassLoader[/data/app/com.example.awesomefilebuilderwidget-1.apk] 
10-05 21:51:45.505: E/AndroidRuntime(3557):  at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240) 
10-05 21:51:45.505: E/AndroidRuntime(3557):  at java.lang.ClassLoader.loadClass(ClassLoader.java:551) 
10-05 21:51:45.505: E/AndroidRuntime(3557):  at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
10-05 21:51:45.505: E/AndroidRuntime(3557):  at android.app.Instrumentation.newActivity(Instrumentation.java:1040) 
10-05 21:51:45.505: E/AndroidRuntime(3557):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1738) 
10-05 21:51:45.505: E/AndroidRuntime(3557):  ... 11 more 

Вот мой Manifest:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.awesomefilebuilderwidget" 
android:versionCode="1" 
android:versionName="1.0" > 

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

<application 
android:allowBackup="true" 
android:icon="@drawable/ic_launcher" 
android:label="@string/app_name" 
android:theme="@style/AppTheme" > 

<receiver android:name=".AFBWidget" android:label="@string/app_name"> 
<intent-filter> 
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/> 
</intent-filter> 

<meta-data android:name="android.appwidget.provider" 
android:resource="@xml/widget_stuff"/> 

</receiver> 

<activity android:name=".WidgetConfig" android:label="@string/app_name"> 
<intent-filter> 
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/> 
<category android:name="android.intent.category.LAUNCHER" />  
</intent-filter> 

</activity> 

<activity android:name=".AFBWidget" android:label="@string/app_name"/> 


</application> 

</manifest> 

Я уверен, что я проверил все ящики в разделе заказа и экспорта. Я также удостоверился, что мои классы AFBWidget и WidgetConfig находятся в src. (Обратите внимание, что фактическая конфигурация виджета находится в правильном месте xml, WidgetConfig.java - это что-то еще)

В чем проблема?

Обновлено LogCat:

10-05 22:47:40.628: D/AndroidRuntime(4113): Shutting down VM 
10-05 22:47:40.628: W/dalvikvm(4113): threadid=1: thread exiting with uncaught exception (group=0x4001d5a0) 
10-05 22:47:40.638: E/AndroidRuntime(4113): FATAL EXCEPTION: main 
10-05 22:47:40.638: E/AndroidRuntime(4113): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.awesomefilebuilderwidget/com.example.awesomefilebuilderwidget.WidgetConfig}: java.lang.ClassNotFoundException: com.example.awesomefilebuilderwidget.WidgetConfig in loader dalvik.system.PathClassLoader[/data/app/com.example.awesomefilebuilderwidget-1.apk] 
10-05 22:47:40.638: E/AndroidRuntime(4113):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1746) 
10-05 22:47:40.638: E/AndroidRuntime(4113):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1854) 
10-05 22:47:40.638: E/AndroidRuntime(4113):  at android.app.ActivityThread.access$1500(ActivityThread.java:135) 
10-05 22:47:40.638: E/AndroidRuntime(4113):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1041) 
10-05 22:47:40.638: E/AndroidRuntime(4113):  at android.os.Handler.dispatchMessage(Handler.java:99) 
10-05 22:47:40.638: E/AndroidRuntime(4113):  at android.os.Looper.loop(Looper.java:150) 
10-05 22:47:40.638: E/AndroidRuntime(4113):  at android.app.ActivityThread.main(ActivityThread.java:4333) 
10-05 22:47:40.638: E/AndroidRuntime(4113):  at java.lang.reflect.Method.invokeNative(Native Method) 
10-05 22:47:40.638: E/AndroidRuntime(4113):  at java.lang.reflect.Method.invoke(Method.java:507) 
10-05 22:47:40.638: E/AndroidRuntime(4113):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
10-05 22:47:40.638: E/AndroidRuntime(4113):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
10-05 22:47:40.638: E/AndroidRuntime(4113):  at dalvik.system.NativeStart.main(Native Method) 
10-05 22:47:40.638: E/AndroidRuntime(4113): Caused by: java.lang.ClassNotFoundException: com.example.awesomefilebuilderwidget.WidgetConfig in loader dalvik.system.PathClassLoader[/data/app/com.example.awesomefilebuilderwidget-1.apk] 
10-05 22:47:40.638: E/AndroidRuntime(4113):  at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240) 
10-05 22:47:40.638: E/AndroidRuntime(4113):  at java.lang.ClassLoader.loadClass(ClassLoader.java:551) 
10-05 22:47:40.638: E/AndroidRuntime(4113):  at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
10-05 22:47:40.638: E/AndroidRuntime(4113):  at android.app.Instrumentation.newActivity(Instrumentation.java:1040) 
10-05 22:47:40.638: E/AndroidRuntime(4113):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1738) 
10-05 22:47:40.638: E/AndroidRuntime(4113):  ... 11 more 

ДОБАВЛЕННЫЕ КЛАССЫ И XML ФАЙЛА: AFBWidget.java:

import java.util.Random; 

import com.example.awesomefilebuilderwidget.R; 
import android.appwidget.AppWidgetManager; 
import android.appwidget.AppWidgetProvider; 
import android.content.Context; 
import android.widget.RemoteViews; 
import android.widget.Toast; 


public class AFBWidget extends AppWidgetProvider{ 

@Override 
public void onUpdate(Context context, AppWidgetManager appWidgetManager, 
     int[] appWidgetIds) { 
    // TODO Auto-generated method stub 
    super.onUpdate(context, appWidgetManager, appWidgetIds); 
    Random r = new Random(); 
    int randomInt = r.nextInt(1000000000); 
    String rand = String.valueOf(randomInt); 

    final int N = appWidgetIds.length; 

    for (int i = 0; i < N; i++){ 
     int awID = appWidgetIds[i]; 
     RemoteViews v = new RemoteViews(context.getPackageName(), R.layout.widget); 
     v.setTextViewText(R.id.tvwidgetUpdate, rand); 
     appWidgetManager.updateAppWidget(awID, v); 
    } 

} 

WidgetConfig.java:

import android.app.Activity; 
import android.app.PendingIntent; 
import android.appwidget.AppWidgetManager; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.RemoteViews; 

import com.example.awesomefilebuilderwidget.R; 


public class WidgetConfig extends Activity implements OnClickListener{ 

EditText info; 
AppWidgetManager awm; 
Context c; 
int awID; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.widgetconfig); 
    Button b = (Button)findViewById(R.id.bwidgetconfig); 
    b.setOnClickListener(this); 
    c = WidgetConfig.this; 
    info = (EditText)findViewById(R.id.etwidgetconfig); 
    //Getting info about the widget that launched this Activity 
    Intent i = getIntent(); 
    Bundle extras = i.getExtras(); 
    if (extras != null){ 
     awID = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, 
       AppWidgetManager.INVALID_APPWIDGET_ID 
       ); 
    }else{ 
     finish(); 
    } 
    awm = AppWidgetManager.getInstance(c); 
} 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    String e = info.getText().toString(); 

    RemoteViews views = new RemoteViews(c.getPackageName(), R.layout.widget); 
    views.setTextViewText(R.id.tvConfigInput, e); 

    Intent in = new Intent(c, WidgetConfig.class); 
    PendingIntent pi = PendingIntent.getActivity(c, 0, in, 0); 
    views.setOnClickPendingIntent(R.id.bwidgetOpen, pi); 

    awm.updateAppWidget(awID, views); 

    Intent result = new Intent(); 
    result.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, awID); 
    setResult(RESULT_OK, result); 

    finish(); 
} 


} 

Widget.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<TextView 
    android:id="@+id/tvConfigInput" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="TextView" /> 

<Button 
    android:id="@+id/bwidgetOpen" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Button" /> 

<TextView 
    android:id="@+id/tvwidgetUpdate" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="TextView" /> 

</LinearLayout> 

WidgetConfig.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<EditText 
    android:id="@+id/etwidgetconfig" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:ems="10" 
    android:hint="@string/user_input_application_name"> 

    <requestFocus /> 
</EditText> 

<Button 
    android:id="@+id/bwidgetconfig" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/ok" /> 

</LinearLayout> 

App Widget Provider (app_stuff.xml): enter image description here

ответ

2

Я НАКОНЕЦ FIXED его после 3 дней! Итак, это было действительно потому, что мои два класса Java были в пакете по умолчанию. Поэтому, чтобы исправить это, поскольку мои классы были доступны через другой пакет, я создал новый пакет, который был моим приложением (com.example.awesomefilebuilderwidget), а затем переместил классы туда, и теперь он работает без проблем! : DD Спасибо за все, что вы наделали, я действительно это делаю! - user1628978

1

пытаются очистить свое рабочее место. Перейти к проекту-> Очистить и выбрать свой проект. По какой-то причине eclipse не создает манифест автоматически.

, а также попытаться очистить вас сервер, делая правую кнопку мыши, а затем чистые

+0

Я очистил оба и запустил затмение, а затем снова очистил. Я также убедился, что полностью переустановил мой виджет на своем устройстве, не разобрав его, а затем снова запустив eclipse при запуске моего виджета, но все равно получаю те же ошибки. – user1628978

+0

, если вы используете сторонние банки, добавили ли вы их в папку библиотеки. Перейдите в «Свойства/путь/библиотеки Java»/«Добавить внешние JAR». – ankit

+0

Я еще не добавил никаких внешних JAR-проектов в проект и не нуждаюсь в использовании, кроме исходного Android.jar для моих классов на данный момент – user1628978

1

добавить все виды деятельности в И в AndroidManifest.xml.clean и запустить проект, то

+0

My WidgetConfig.java и AFBWidget.java - это единственные классы, которые у меня есть помимо файлов xml и поставщика Appwidget на момент, так что я должен иметь их всех в манифесте – user1628978

+0

Я надеюсь, что его WidgetConfig в порядке, а не My WidgetConfig.java (включено мое) – user2819836

+0

Просто «WidgetConfig» – user1628978

Смежные вопросы