模拟器应用程序在启动第二个活动后停止

Posted

技术标签:

【中文标题】模拟器应用程序在启动第二个活动后停止【英文标题】:Emulator app stopped after launching second activity 【发布时间】:2021-11-27 21:12:47 【问题描述】:

我有一个 ProfileActivity:

public class ProfileActivity extends AppCompatActivity 

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

    final ImageView exampleImage = (ImageView) this.findViewById(R.id.exampleImageView);
    exampleImage.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View v) 
            // [TODO] Implement application behavior when the user clicks the profile picture
            //Toast.makeText(ProfileActivity.this, "Button Clicked", Toast.LENGTH_SHORT).show();
            startActivity(new Intent(ProfileActivity.this, GalleryActivity.class));
        
    );

我还有第二个活动“GalleryActivity”:

public class GalleryActivity extends AppCompatActivity 
    ImageView imageView;
    private static final int PICK_IMAGE = 100;
    Uri imageUri;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
            super.onCreate(savedInstanceState);
            Intent gallery = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);
            startActivityForResult(gallery, PICK_IMAGE);
    

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
            super.onActivityResult(requestCode, resultCode, data);
            if (resultCode == RESULT_OK && requestCode == PICK_IMAGE) 
                    imageUri = data.getData();
                    imageView.setImageURI(imageUri);
            
    

但是,当我启动 android 模拟器然后单击图像时,它并没有把我带到照片库,而是把我带到了这个: 为什么会这样,我该如何解决?\

E/AndroidRuntime: FATAL EXCEPTION: main
android.content.ActivityNotFoundException: Unable to find explicit  
 activity class 
pickture.GalleryActivity; 
have you declared this activity in your AndroidManifest.xml?

【问题讨论】:

从 logcat 发布堆栈跟踪。此外,模拟器没有崩溃,您的应用程序崩溃了。两者之间有一个非常重要的区别。 编辑了问题! 【参考方案1】:

它告诉你: android.content.ActivityNotFoundException:找不到显式 活动课

这意味着您尚未将 GalleryActivity 添加到 Android 清单文件中。检查一下。

还有,你为什么需要这个活动?你可以开始你的 Intent 库 = new Intent(Intent.ACTION_PICK,

MediaStore.Images.Media.INTERNAL_CONTENT_URI);
            startActivityForResult(gallery, PICK_IMAGE);

来自 ProfileActivity。

【讨论】:

【参考方案2】:

您在 GalleryActivity 上收到 ActivityNotFoundException,这意味着您在 AndroidManifest.xml 文件中声明活动的方式有问题。如果您一直阅读,错误消息实际上暗示了这一点。

要解决此问题,您需要在 AndroidManifest.xml 文件中的应用程序标记的一侧声明您的 GalleryActivity

基本活动声明

<activity
     android:name=".GalleryActivity"
     android:exported="true">
</activity>

应用声明的放置位置

<application
    ...
    ...>
    <activity
        android:name=".MainActivity"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    
    <- PUT YOUR ACTIVITY DECLARATION HERE ->

</application>

【讨论】:

问题已编辑 编辑回复以反映您遇到的问题!【参考方案3】:

你有 2 个问题 第一个:GalleryActivity 类中缺少 setContentView。

setContentView(R.layout.activity_gallery);

第二:您需要在 AndroidManifest.xml 文件中的应用程序标签中声明您的 GalleryActivity

<activity android:name=".GalleryActivity"/>

【讨论】:

以上是关于模拟器应用程序在启动第二个活动后停止的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 中的新活动无法启动

不幸的是,Flutter App 因无法启动活动 ComponentInfo 错误而停止工作

一个 JMS 消费者停止监听活动的 mq 主题,而第二个没有

需要帮助找出为啥我的应用程序在单击按钮后没有离开主屏幕(这应该带我进入第二个活动屏幕)

如何在 iOS 模拟器启动时停止应用程序请求跟踪

设备重新启动后,地理围栏是不是在 android 中保持活动状态