0

我在运行我的 android 应用程序进行调试时遇到问题。这是我第一次构建android应用程序,所以我对这个过程并不熟悉。我从 LogCat 收到以下错误消息

07-30 22:48:35.626: E/Trace(744): error opening trace file: No such file or directory (2)
07-30 22:49:42.285: E/AndroidRuntime(744): FATAL EXCEPTION: main
07-30 22:49:42.285: E/AndroidRuntime(744): java.lang.IllegalStateException: Could not execute method of the activity
07-30 22:49:42.285: E/AndroidRuntime(744):  at android.view.View$1.onClick(View.java:3599)
07-30 22:49:42.285: E/AndroidRuntime(744):  at android.view.View.performClick(View.java:4204)
07-30 22:49:42.285: E/AndroidRuntime(744):  at android.view.View$PerformClick.run(View.java:17355)
07-30 22:49:42.285: E/AndroidRuntime(744):  at android.os.Handler.handleCallback(Handler.java:725)
07-30 22:49:42.285: E/AndroidRuntime(744):  at android.os.Handler.dispatchMessage(Handler.java:92)
07-30 22:49:42.285: E/AndroidRuntime(744):  at android.os.Looper.loop(Looper.java:137)
07-30 22:49:42.285: E/AndroidRuntime(744):  at android.app.ActivityThread.main(ActivityThread.java:5041)
07-30 22:49:42.285: E/AndroidRuntime(744):  at java.lang.reflect.Method.invokeNative(Native Method)
07-30 22:49:42.285: E/AndroidRuntime(744):  at java.lang.reflect.Method.invoke(Method.java:511)
07-30 22:49:42.285: E/AndroidRuntime(744):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
07-30 22:49:42.285: E/AndroidRuntime(744):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
07-30 22:49:42.285: E/AndroidRuntime(744):  at dalvik.system.NativeStart.main(Native Method)
07-30 22:49:42.285: E/AndroidRuntime(744): Caused by: java.lang.reflect.InvocationTargetException
07-30 22:49:42.285: E/AndroidRuntime(744):  at java.lang.reflect.Method.invokeNative(Native Method)
07-30 22:49:42.285: E/AndroidRuntime(744):  at java.lang.reflect.Method.invoke(Method.java:511)
07-30 22:49:42.285: E/AndroidRuntime(744):  at android.view.View$1.onClick(View.java:3594)
07-30 22:49:42.285: E/AndroidRuntime(744):  ... 11 more
07-30 22:49:42.285: E/AndroidRuntime(744): Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.wadi3mrad/com.example.wadi3mrad.biog}; have you declared this activity in your AndroidManifest.xml?
07-30 22:49:42.285: E/AndroidRuntime(744):  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1618)
07-30 22:49:42.285: E/AndroidRuntime(744):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1417)
07-30 22:49:42.285: E/AndroidRuntime(744):  at android.app.Activity.startActivityForResult(Activity.java:3370)
07-30 22:49:42.285: E/AndroidRuntime(744):  at android.app.Activity.startActivityForResult(Activity.java:3331)
07-30 22:49:42.285: E/AndroidRuntime(744):  at android.app.Activity.startActivity(Activity.java:3566)
07-30 22:49:42.285: E/AndroidRuntime(744):  at android.app.Activity.startActivity(Activity.java:3534)
07-30 22:49:42.285: E/AndroidRuntime(744):  at com.example.wadi3mrad.MainActivity.someFunction(MainActivity.java:55)
07-30 22:49:42.285: E/AndroidRuntime(744):  ... 14 more

代码

public class MainActivity extends Activity {



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
    WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_main);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

}
public void someFunction(View v)
{
   Intent myIntentd= new Intent();
     switch (v.getId()) // get id of Button clicked
     {
         case (R.id.music):
         myIntentd = new Intent(getApplicationContext(),
                 Albums.class);
        break;
         case (R.id.bio):
         myIntentd = new Intent(getApplicationContext(),
                 biog.class);
         break;
         case (R.id.face):
         myIntentd = new Intent(getApplicationContext(),
                 faceboom.class);
         break;
         case (R.id.info_but):
         myIntentd = new Intent(getApplicationContext(),
                 info.class);
         break;
     }
   startActivity(myIntentd);
}



@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

4

1 回答 1

2

没有任何代码,除了 Jon Skeet 之外,没有人能告诉你问题出在哪里。但是通过查看 logcat,您正试图访问一个Array比您的元素更多的元素Array

这条线在这里

 Caused by: java.lang.ArrayIndexOutOfBoundsException: length=3; index=3

给出一个例外,说您正在尝试访问索引 3,但数组的大小为 3,因此可能的最高索引为 2,因为 anArray的底数为 0。

此处的这一行(引用您的项目的异常之后的第一行)说明了该行在哪一行Activity以及该行所在的方法

at com.example.wadi3mrad.MainActivity.addListenerOnButton(MainActivity.java:81)

将 a 添加到 aMainActivity时的第 81 行。listenerButton

我知道这不是一个答案,但你知道他们说什么......“教人钓鱼......”

编辑

让我们看看这是怎么回事。由于所有这些按钮几乎都做一件事,因此更简单和更简洁的方法是onClick在您的 xml 中为所有这些按钮声明函数,然后您不需要所有侦听器和按钮数组。

在您的 xml 中,对于每个按钮,添加类似这一行的内容

android:onClick="someFunction"

那么您只需要 Java 中的一个函数,而不需要所有其他的东西。所以你的 Java 代码看起来像

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

public void someFunction(View v)
{
   Intent myIntent = new Intent();
     switch (v.getId()) // get id of Button clicked
     {
         case (R.id.music):
         myIntent = new Intent(MainActivity.this,
                Albums.class);
        break;
         case (R.id.bio):
         myIntent = new Intent(MainActivity.this,
                biog.class);
         break;
         case (R.id.face):
         myIntent = new Intent(MainActivity.this,
                faceboom.class);
         break;
         case (R.id.info_but):
         myIntent = new Intent(MainActivity.this,
                info.class);
         break;
     }
   startActivity(myIntent);
}
于 2013-07-30T18:55:54.880 回答