2017-04-10 100 views
-4

我试图让一个按钮,进入另一个活动,但每次我按下它的应用程序崩溃, 这里的应用是从我MainActivity.java文件中的代码:意图按钮崩溃

package com.example.noot_a_normal_pc.kmtomiles; 

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 
import static android.widget.Toast.makeText; 

public class MainActivity extends AppCompatActivity implements View.OnClickListener { 

    Button buttonBegin, buttonExit; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     buttonBegin = (Button) findViewById(R.id.begin); 
     buttonBegin.setOnClickListener(this); 
     buttonExit = (Button) findViewById(R.id.exit); 
     buttonExit.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     if (v.equals(buttonExit)) { 
      Toast.makeText(getApplicationContext(), "Why would you want to exit such a great app?", Toast.LENGTH_LONG).show(); 
     } 
     else if (v.equals(buttonBegin)) { 
      Intent intent = new Intent (this, question.class); 
      startActivity(intent); 
     } 
    } 

} 

这里从我的XML文件,我的两个按钮的代码:

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Begin" 
    android:id="@+id/begin" 
    android:layout_marginTop="45dp" 
    android:layout_below="@+id/textView" 
    android:layout_alignRight="@+id/textView" 
    android:layout_alignEnd="@+id/textView" 
    android:clickable="true" 
    android:background="#ffffff"/> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Exit" 
    android:id="@+id/exit" 
    android:layout_marginTop="27dp" 
    android:layout_below="@+id/begin" 
    android:layout_alignLeft="@+id/begin" 
    android:layout_alignStart="@+id/begin" 
    android:clickable="true" 
    android:background="#ffffff" /> 

这里是我的堆栈跟踪信息:

7-2477/? E/AndroidRuntime: FATAL EXCEPTION: main 
Process: com.example.noot_a_normal_pc.kmtomiles, PID: 2477 
android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.noot_a_normal_pc.kmtomiles/com.example.noot_a_normal_pc.kmtomiles.question}; have you declared this activity in your AndroidManifest.xml? 
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1794) 
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1512) 
at android.app.Activity.startActivityForResult(Activity.java:3917) 
at android.app.Activity.startActivityForResult(Activity.java:3877) 
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:842) 
at android.app.Activity.startActivity(Activity.java:4200) 
at android.app.Activity.startActivity(Activity.java:4168) 
at com.example.noot_a_normal_pc.kmtomiles.MainActivity.onClick(MainActivity.java:33) 
at android.view.View.performClick(View.java:5198) 
at android.view.View$PerformClick.run(View.java:21147) 
at android.os.Handler.handleCallback(Handler.java:739) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5417) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
+2

http://stackoverflow.com/questions/23353173/unfortunately-myapp-has-stopped-how-can-i-solve-this –

+0

*“的应用程序崩溃,没有错误消息“*不,有一个错误消息。检查stacktrace并在这里发帖 – codeMagic

+1

有一个错误消息,也就是question.class,是一个实际的类,为什么不遵循约定应该是大写Question.class – Remario

回答

3

this keyword范围是相当具体,使用getContext()getBaseContext() instead.or MainActivity.this

您还没有宣布在manifest.That您的活动就是为什么你所得到的错误。例如<activity android:name="YourActivityName" />

而且您比较视图的可能性的方法是不完全正确的,而不是使用switch语句v.getId()方法,然后用自己的ID属性每个case语句。 case R.id.view_name

+0

您需要将您的活动添加到清单以让其知道它存在。 – Remario

+0

在清单中的应用程序标签中添加活动。 – Remario

+0

也可以将您的课程重命名为Question,而不是使用惯例而不是类型。 – Remario

0

作为一个程序员,你需要阅读和理解给定的错误日志(当应用程序崩溃)。

通过具有logcat中,在线路

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

据说您还没有在清单中声明您的活动。没有在清单申报创建活动的最简单方法是点击

文件>新建>活动>空活动

的Android Studio将创建Java和XML文件(布局),当然它也会在Manifests.XML中声明你的活动。

也许我的回答将帮助你在未来:)