2016-06-09 42 views
2

我有一个非常基本而又烦人的问题。我创建了新的活动并将意图传达给他们。然而,当我沟通两个: 主菜单,EventCreationActivity,我得到以下错误:android.content.ActivityNotFoundException:无法找到显式活动类 - 如何解决它?

android.content.ActivityNotFoundException:无法找到明确的活动类{/com.mysampleapp.EventCreationActivity};你有没有在你的AndroidManifest.xml中声明这个活动?

当我分别运行这些活动时,他们完美地工作。 这里是MainMenu的

package com.mysampleapp; 


import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.View; 
import android.widget.Button; 

//import com.amazon.mysampleapp.R; 

public class MainMenu extends AppCompatActivity { 
    //public final static String EXTRA_MESSAGE = "com.mysampleapp.MESSAGE"; 
    final Intent intent = new Intent(this, EventCreationActivity.class); 
    Button newEvent; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main_menu); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     newEvent = (Button) findViewById(R.id.new_event_button); 

     newEvent.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       startActivity(intent); 
      } 
     }); 

     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    } 



} 

和明显的代码:

<application 
     android:name=".Application" 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme"> 
     <activity 
      android:name=".SplashActivity" 
      android:configChanges="keyboard|keyboardHidden|orientation|screenSize" 
      android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/title_activity_main" /> 
     <activity 
      android:name=".LogInActivity" 
      android:label="@string/title_activity_log_in" 
      android:theme="@style/AppTheme"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".MainMenu" 
      android:label="@string/title_activity_main_menu" 

      android:theme="@style/AppTheme"> 
      <!--android:parentActivityName=".LogInActivity"--> 
      <!--<meta-data--> 
       <!--android:name="android.support.PARENT_ACTIVITY"--> 
       <!--android:value="com.mysampleapp.LogInActivity" />--> 
     </activity> 
     <activity 
      android:name=".MainDrawerActivity" 
      android:label="@string/title_activity_main_drawer" 
      android:theme="@style/AppTheme"> 
      <!--<meta-data--> 
       <!--android:name="android.support.PARENT_ACTIVITY"--> 
       <!--android:value="com.mysampleapp.MainMenu" />--> 
     </activity> 
     <activity 
      android:name=".EventCreationActivity" 
      android:label="@string/title_activity_event_creation" 

      android:theme="@style/AppTheme"> 
      <!--android:parentActivityName=".MainMenu"--> 
      <!--<intent-filter>--> 
       <!--<action android:name="android.intent.action.MAIN" />--> 
       <!--<category android:name="android.intent.category.DEFAULT" />--> 
      <!--</intent-filter>--> 
      <!--<meta-data--> 
       <!--android:name="android.support.PARENT_ACTIVITY"--> 
       <!--android:value="com.mysampleapp.MainMenu" />--> 
     </activity> 

正如你看到的,我评论了一些东西的清单文件,但它并没有帮助。我也看了其他类似的问题,但他们没有帮助。

由于提前, 约翰

+2

告诉我们EventCreationActivity –

+0

创建你的意图内按钮的onclick newEvent.setOnClickListener(新View.OnClickListener(){ @覆盖 公共无效的onClick(视图v){ 意向意图=新意图(MainMenu.this, EventCreationActivity.class); startActivity(intent); } }); – dindinii

+0

确保清单中的软件包明确无误。 'package =“com.mysampleapp”''。之后,你将不得不在这个包里有所有的活动类。因此,在你当前的异常情况下,确保你的'EventCreationActivity'在包'com.mysampleapp'内。如果它不起作用,请提供'EventCreationActivity'类和完整'manifest'。 – Jimmy

回答

2

您正在实例化活动已经过其生命周期方法之前的意图。这意味着您传递给Intent构造函数的Context无效。

通常情况下,意图创造你使用它的权利之前:

newEvent.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Intent intent = new Intent(MainMenu.this, EventCreationActivity.class); 
     startActivity(intent); 
    } 
}); 
+0

我无法做到这一点,因为它无法解决“this”,因为无法找到活动 –

+0

@JohnLeszcz尝试使用'MainMenu.this'而不是'this' – ManishMenaria

3

解决方法是在你的问题

have you declared this activity in your AndroidManifest.xml? 

采用全包的名字,像这样的类在你的清单

android:name="com.mysampleapp.MainMenu" 
+0

我做到了。我仍然得到同样的错误。我为MainMenu和EventCreationActivity做了这个。 –

+0

可以显示日志跟踪吗? – ManishMenaria

1

约翰,你有没有试过完整的活动名称com.mysampleapp.MainMenu?为所有活动执行此操作:your.package.ActivityName。

<activity 
     android:name="com.mysampleapp.MainMenu" 
     android:label="@string/title_activity_main_menu" 

     android:theme="@style/AppTheme"> 
     <!--android:parentActivityName=".LogInActivity"--> 
     <!--<meta-data--> 
      <!--android:name="android.support.PARENT_ACTIVITY"--> 
      <!--android:value="com.mysampleapp.LogInActivity" />--> 
    </activity> 
1

只要遵循这些步骤,你肯定会解决这个问题:

1)进入文件。 2)点击Invalidate Cache/Restart 3)现在进入AndroidManifest.xml,很可能你没有显示 RED登录你的活动。如果您在活动中看到RED,请将其删除,然后再使用软件包名称输入活动的名称。

相关问题