Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ActivityNotFoundException意图+;小装置_Android_Android Intent_Android Widget - Fatal编程技术网

Android ActivityNotFoundException意图+;小装置

Android ActivityNotFoundException意图+;小装置,android,android-intent,android-widget,Android,Android Intent,Android Widget,我正在尝试创建一个小部件,每当我按下save按钮并从editText获取信息时,它都会更新文本。当我按下按钮以意图发送变量时,它会在logcat中抛出“android.content.ActivityNotFoundException:找不到显式活动类”。这是我的代码: Main.class public class MainActivity extends AppCompatActivity { Button save; EditText Nom; EditText C

我正在尝试创建一个小部件,每当我按下save按钮并从editText获取信息时,它都会更新文本。当我按下按钮以意图发送变量时,它会在logcat中抛出“android.content.ActivityNotFoundException:找不到显式活动类”。这是我的代码:

Main.class

public class MainActivity extends AppCompatActivity {
    Button save;
    EditText Nom;
    EditText Cognom;

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

        save = (Button) findViewById(R.id.save);
        Nom = (EditText) findViewById(R.id.editTextNom);
        Cognom = (EditText) findViewById(R.id.editTextCognom);

        save.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i;
                i = new Intent(MainActivity.this, NewAppWidget.class);
                i.putExtra("NOM",Nom.getText().toString());
                i.putExtra("COGNOM",Cognom.getText().toString());
                startActivity(i);
            }
        });
    }
}
public class NewAppWidget extends AppWidgetProvider {

    static Intent intent = new Intent();

    static String nom = intent.getExtras().getString("NOM");
    static String cognom = intent.getExtras().getString("COGNOM");

    static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
                                int appWidgetId) {


        CharSequence widgetText = context.getString(R.string.appwidget_text);
        // Construct the RemoteViews object
        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.new_app_widget);
        views.setTextViewText(R.id.TextViewNom, nom);
        views.setTextViewText(R.id.TextViewCognom, cognom);

        // Instruct the widget manager to update the widget
        appWidgetManager.updateAppWidget(appWidgetId, views);
    }

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        // There may be multiple widgets active, so update all of them
        for (int appWidgetId : appWidgetIds) {
            updateAppWidget(context, appWidgetManager, appWidgetId);
        }
    }

    @Override
    public void onEnabled(Context context) {
        // Enter relevant functionality for when the first widget is created
    }

    @Override
    public void onDisabled(Context context) {
        // Enter relevant functionality for when the last widget is disabled
    }
}
WidgetClass

public class MainActivity extends AppCompatActivity {
    Button save;
    EditText Nom;
    EditText Cognom;

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

        save = (Button) findViewById(R.id.save);
        Nom = (EditText) findViewById(R.id.editTextNom);
        Cognom = (EditText) findViewById(R.id.editTextCognom);

        save.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i;
                i = new Intent(MainActivity.this, NewAppWidget.class);
                i.putExtra("NOM",Nom.getText().toString());
                i.putExtra("COGNOM",Cognom.getText().toString());
                startActivity(i);
            }
        });
    }
}
public class NewAppWidget extends AppWidgetProvider {

    static Intent intent = new Intent();

    static String nom = intent.getExtras().getString("NOM");
    static String cognom = intent.getExtras().getString("COGNOM");

    static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
                                int appWidgetId) {


        CharSequence widgetText = context.getString(R.string.appwidget_text);
        // Construct the RemoteViews object
        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.new_app_widget);
        views.setTextViewText(R.id.TextViewNom, nom);
        views.setTextViewText(R.id.TextViewCognom, cognom);

        // Instruct the widget manager to update the widget
        appWidgetManager.updateAppWidget(appWidgetId, views);
    }

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        // There may be multiple widgets active, so update all of them
        for (int appWidgetId : appWidgetIds) {
            updateAppWidget(context, appWidgetManager, appWidgetId);
        }
    }

    @Override
    public void onEnabled(Context context) {
        // Enter relevant functionality for when the first widget is created
    }

    @Override
    public void onDisabled(Context context) {
        // Enter relevant functionality for when the last widget is disabled
    }
}
清单:

 <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>

        <receiver android:name=".NewAppWidget">
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>

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

错误: android.content.ActivityNotFoundException:找不到显式活动类

AppWidgetProvider
扩展
BroadcastReceiver
非活动

要使用
startActivity
您需要提供
Activity类的子对象

NewAppWidget
不是活动

AppWidgetProvider
扩展
BroadcastReceiver
非活动

要使用
startActivity
您需要提供
Activity类的子对象


NewAppWidget
不是活动

老兄,首先,你不能像启动活动那样启动小部件提供商

如果您想从活动中更新小部件,可以这样做

Intent intent = new Intent(this, MyAppWidgetProvider.class);
intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
// Use an array and EXTRA_APPWIDGET_IDS instead of AppWidgetManager.EXTRA_APPWIDGET_ID,
// since it seems the onUpdate() is only fired on that:
 int[] ids = AppWidgetManager.getInstance(getApplication())
    .getAppWidgetI‌​ds(new ComponentName(getApplication(), MyAppWidgetProvider.class));
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids);
sendBroadcast(intent);
您可以将参数传递到此目的,或者更好地将值保存在中,并在onUpdate方法中的小部件提供程序类中使用它

我读过你的widgetprovider类,你在使用这个类时会遇到很多错误。为了理解android小部件,您可以分叉并理解这一点


在本示例中,您将了解如何更新小部件、如何拥有多个小部件控件以及更多内容。因此,我强烈建议您仔细阅读此示例。

Dude首先,您不能像启动活动一样启动小部件提供商

如果您想从活动中更新小部件,可以这样做

Intent intent = new Intent(this, MyAppWidgetProvider.class);
intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
// Use an array and EXTRA_APPWIDGET_IDS instead of AppWidgetManager.EXTRA_APPWIDGET_ID,
// since it seems the onUpdate() is only fired on that:
 int[] ids = AppWidgetManager.getInstance(getApplication())
    .getAppWidgetI‌​ds(new ComponentName(getApplication(), MyAppWidgetProvider.class));
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids);
sendBroadcast(intent);
您可以将参数传递到此目的,或者更好地将值保存在中,并在onUpdate方法中的小部件提供程序类中使用它

我读过你的widgetprovider类,你在使用这个类时会遇到很多错误。为了理解android小部件,您可以分叉并理解这一点


在本示例中,您将了解如何更新小部件、如何拥有多个小部件控件以及更多内容。因此,我强烈建议您仔细阅读此示例。

您能告诉我实现我想要的功能的正确方法吗?提前谢谢。您的问题不清楚。只需将值传递给下一个活动。为什么需要为其创建小部件@Antonioor如果你想要一个自定义小部件..只需创建它并将数据传递给它..在相同的活动本身..我只想使用editText值编辑小部件并更新它。你能告诉我实现我想要的东西的正确方法吗?提前谢谢。您的问题不清楚。只需将值传递给下一个活动。为什么需要为其创建小部件@Antonioor如果你想要一个自定义小部件..只需创建它并将数据传递给它..在相同的活动本身..我只想使用editText值编辑小部件并更新它。谢谢你的回答,我会尝试它。谢谢你的回答,我会尝试它。