2012-01-26 59 views
1

嗨我编写了一个简单的android应用程序,其中包含两个xml页面,其中一个具有一个图像按钮,当它被单击时,该图像按钮被用来打开第二个xml页面。该代码返回没有错误,并运行良好,但当我点击Android模拟器中的按钮它崩溃,并要求我强制关闭。这里是我的工作代码:Android应用程序崩溃按钮单击

第一项活动:

package com.android.Train; 

import com.android.TrainMenu.MenuActivity; 

    import android.app.Activity; 
    import android.content.Intent; 
    import android.os.Bundle; 
    import android.view.View; 

    public class TrainActivity extends Activity 
    { 
     /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 

    public void goMenu(View v) 
    { 
     Intent myIntent = new Intent(this, MenuActivity.class); 
     startActivity(myIntent); 
    }  
} 

第一个XML文件:

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

    <ImageButton 
     android:id="@+id/enterButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/button_enter" 
     android:clickable="true" 
     android:onClick="goMenu" /> 

    </LinearLayout> 

次活动:

package com.android.TrainMenu; 

import android.app.Activity; 
import android.os.Bundle; 

import com.android.Train.R; 

public class MenuActivity extends Activity 
{ 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.menu); 
    } 
} 

二XML文件:

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

</RelativeLayout> 

关于为什么会崩溃的任何想法?

在此先感谢

我又跑了,这里是logcat的文件

01-26 14:21:37.784: D/AndroidRuntime(287): Shutting down VM 
01-26 14:21:37.784: W/dalvikvm(287): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 
01-26 14:21:37.815: E/AndroidRuntime(287): FATAL EXCEPTION: main 
01-26 14:21:37.815: E/AndroidRuntime(287): java.lang.IllegalStateException: Could not execute method of the activity 
01-26 14:21:37.815: E/AndroidRuntime(287): at android.view.View$1.onClick(View.java:2072) 
01-26 14:21:37.815: E/AndroidRuntime(287): at android.view.View.performClick(View.java:2408) 
01-26 14:21:37.815: E/AndroidRuntime(287): at android.view.View$PerformClick.run(View.java:8816) 
01-26 14:21:37.815: E/AndroidRuntime(287): at android.os.Handler.handleCallback(Handler.java:587) 
01-26 14:21:37.815: E/AndroidRuntime(287): at android.os.Handler.dispatchMessage(Handler.java:92) 
01-26 14:21:37.815: E/AndroidRuntime(287): at android.os.Looper.loop(Looper.java:123) 
01-26 14:21:37.815: E/AndroidRuntime(287): at android.app.ActivityThread.main(ActivityThread.java:4627) 
01-26 14:21:37.815: E/AndroidRuntime(287): at java.lang.reflect.Method.invokeNative(Native Method) 
01-26 14:21:37.815: E/AndroidRuntime(287): at java.lang.reflect.Method.invoke(Method.java:521) 
01-26 14:21:37.815: E/AndroidRuntime(287): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
01-26 14:21:37.815: E/AndroidRuntime(287): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
01-26 14:21:37.815: E/AndroidRuntime(287): at dalvik.system.NativeStart.main(Native Method) 
01-26 14:21:37.815: E/AndroidRuntime(287): Caused by: java.lang.reflect.InvocationTargetException 
01-26 14:21:37.815: E/AndroidRuntime(287): at com.android.Train.TrainActivity.goMenu(TrainActivity.java:23) 
01-26 14:21:37.815: E/AndroidRuntime(287): at java.lang.reflect.Method.invokeNative(Native Method) 
01-26 14:21:37.815: E/AndroidRuntime(287): at java.lang.reflect.Method.invoke(Method.java:521) 
01-26 14:21:37.815: E/AndroidRuntime(287): at android.view.View$1.onClick(View.java:2067) 
01-26 14:21:37.815: E/AndroidRuntime(287): ... 11 more 
01-26 14:21:37.815: E/AndroidRuntime(287): Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.android.Train/com.android.TrainMenu.MenuActivity}; have you declared this activity in your AndroidManifest.xml? 
01-26 14:21:37.815: E/AndroidRuntime(287): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1404) 
01-26 14:21:37.815: E/AndroidRuntime(287): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378) 
01-26 14:21:37.815: E/AndroidRuntime(287): at android.app.Activity.startActivityForResult(Activity.java:2817) 
01-26 14:21:37.815: E/AndroidRuntime(287): at android.app.Activity.startActivity(Activity.java:2923) 
01-26 14:21:37.815: E/AndroidRuntime(287): ... 15 more 

的Android的Manifest.xml

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

    <uses-sdk android:minSdkVersion="7" /> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <activity 
      android:label="@string/app_name" 
      android:name=".TrainActivity" > 
      <intent-filter > 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

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

    </application> 

</manifest> 
+0

这里有什么错误?请在这里输入错误信息 –

+2

您是否在您的Manifest文件中声明了第二个活动? – DeeV

+0

你可以添加logcat的消息吗?你也可能想尝试添加一些东西到你的第二个布局 –

回答

2

我认为这是因为你的MenuActivity类与你的TrainActivity类不同。我不知道如何与你的封装布局做到这一点,但如果你有以下几点:

com.ardroid.train.TrainActivity 
com.ardroid.train.menu.MenuActivity 

那么你的清单条目是:

<activity 
    android:name=".menu.MenuActivity " 
    android:label="@string/app_name" /> 
+0

谢谢问题很多,我只是不得不更改包声明,以便两个类都在同一个包中。谢谢 – user1161118

0

确保您在AndroidManifest.xml文件中添加这两种活动。

+0

我发布了上述清单,其中第二项活动是否正确?我仍然收到相同的错误 – user1161118

0

我想你还没有在清单文件 进入活动的每个活动都必须是有在AndroidManifest.xml文件 这样这样

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <activity 
     android:name=".TrainActivity " 
     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=".MenuActivity " 
     android:label="@string/app_name" /> 
</application> 

,如果问题再使用 意向myIntent =新意图(TrainActivity。这个,MenuActivity.class);

+0

Hi ive更新了问题,包括我的Android清单和logcat文件,我仍然收到活动未找到错误,当我点击按钮后,将活动添加到清单? – user1161118

0

首先,你需要将活动添加到您的清单文件(无空格):

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

其次,按钮本身,这是因为它可能会如何做一个建议:

import com.android.TrainMenu.MenuActivity; 

    import android.app.Activity; 
    import android.content.Intent; 
    import android.os.Bundle; 
    import android.view.View; 

    public class TrainActivity extends Activity 
    { 

    ImageButton button; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     button = (ImageButton) findViewById(R.id.enterButton); 

     button.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 
        goMenu(); 
      } 

     }); 
    } 


    public void goMenu() 
    { 
     Intent myIntent = new Intent(this, MenuActivity.class); 
     startActivity(myIntent); 
    }  
} 
0

你需要Instanciation ImageButtom on Activty:

ImageButton btnImg; 

... oncreadte(...) { 

btnImg = (ImageButton) findViewById(R.id.enterButton); 

... 

btnImg.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 

// This call new Activity on press ImageButton 
Intent it = new Intent(TrainActivity.this, MenuActivity.class); 
startActivity(it); 

} 

} 

祝你好运。

相关问题