我的按钮在eclipse android:ActivityNotFoundException中崩溃我的项目

时间:2014-11-07 00:09:32

标签: java android xml eclipse uibutton

已回答(在底部)

所以我一直试图让我的按钮让我进入下一个屏幕。 我在eclipse中编程。 这是一个基本的登录按钮,允许我进入登录界面。 我为长篇文章道歉,但我觉得现在提供的所有信息都很好。

我想知道这是我的设备,当我按下播放时,我正在使用它。

我的logcat底部的错误是:

(logcat的前几行)

11-06 18:08:59.973: PID 324 TID 324 D/AndroidRuntime(324): Shutting down VM
11-06 18:08:59.973: W/dalvikvm(324): threadid=1: thread exiting with uncaught exception     
(group=0x4001d800)
11-06 18:08:59.983: E/AndroidRuntime(324): FATAL EXCEPTION: main
11-06 18:08:59.983: E/AndroidRuntime(324): android.content.ActivityNotFoundException: Unable to 
find explicit activity class {com.example.coffeeshop/com.example.coffeeshop.Login}; have you 
declared this activity in your AndroidManifest.xml?

这是前几行错误。

所以我的res / layout / activity_main代码: (请注意,“创建帐户”的第二个按钮不会成为我尝试登录进入登录屏幕的问题。)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".Main"
    android:background="#15BCA8"
    android:id="@+id/activity_main">
<Button
    android:id="@+id/createbtn"
    android:layout_width="2200dp"
    android:layout_height="70dp"
    android:padding="10dp"
    android:textSize="25sp"
    android:textStyle="bold|normal"
    android:text="@string/create_account"
    android:textColor="#000000"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_marginBottom="44dp"
    android:background="@drawable/roundedbutton" />
<Button
    android:id="@+id/loginbtn"
    android:layout_width="2200dp"
    android:layout_height="80dp"
    android:layout_above="@+id/createbtn"
    android:layout_alignStart="@+id/createbtn"
    android:layout_alignLeft="@+id/createbtn"
    android:layout_alignParentStart="true"
    android:layout_alignParentLeft="true"
    android:layout_marginBottom="29dp"
    android:padding="10dp"
    android:text="@string/log_in"
    android:textColor="#000000"
    android:textSize="30sp"
    android:textStyle="bold|normal"
    android:typeface="sans"
    android:background="@drawable/roundedbutton"
    />
</RelativeLayout>

这个布局假设导致login.xml。此外,圆形按钮将在最后发布,但我不认为这是一个问题。 login.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:background="#15BCA8"
android:id="@+id/loginlayout">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textSize="60sp"
    android:text="Login"
    android:id="@+id/textView"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="61dp" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Username"
    android:id="@+id/button"
    android:textColor="#000000"
    android:background="#15BCA8"
    android:layout_marginTop="65dp"
    android:layout_toStartOf="@+id/textView"
    android:layout_below="@+id/textView"
    android:layout_toLeftOf="@+id/textView" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Password"
    android:id="@+id/button2"
    android:textColor="#000000"
    android:background="#15BCA8"
    android:layout_marginTop="58dp"
    android:layout_below="@+id/editText"
    android:layout_alignLeft="@+id/button"
    android:layout_alignStart="@+id/button" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="textPersonName"
    android:ems="10"
    android:id="@+id/editText"
    android:layout_below="@+id/button"
    android:layout_alignLeft="@+id/button2"
    android:layout_alignStart="@+id/button2"
    android:background="#FFFFFF" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="textPassword"
    android:ems="10"
    android:id="@+id/editText2"
    android:layout_below="@+id/button2"
    android:layout_alignLeft="@+id/button2"
    android:layout_alignStart="@+id/button2"
    android:background="#FFFFFF" />

<Button
    android:id="@+id/sbmtbtn"
    android:layout_width="120dp"
    android:layout_height="wrap_content"
    android:layout_alignEnd="@+id/editText2"
    android:layout_alignRight="@+id/editText2"
    android:layout_below="@+id/editText2"
    android:layout_marginTop="20dp"
    android:background="@drawable/roundedbutton"
    android:text="Submit"
    android:textSize="24sp" />

</RelativeLayout>

所以这看起来相当不错,是吗?

这是我的MainActivity.java类:

package com.example.coffeeshop;

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


    public class MainActivity  extends Activity {

    Button button;

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

    private void addListenerOnButton() {

        final Context context = this;

        button = (Button) findViewById(R.id.loginbtn);
        button.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {

                Intent intent = new Intent(context, Login.class);
                startActivity(intent);

            }

        });
    }
}

并且应该将我链接到我的登录屏幕,在此编码:

package com.example.coffeeshop;

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

public class Login  extends Activity {

    Button button;

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

    private void addListenerOnButton() {

        final Context context = this;

        button = (Button) findViewById(R.id.sbmtbtn);
        button.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                Intent intent = new Intent(context, MainMenu.class);
                startActivity(intent);
            }
        });
    }
}

为了好玩,这是我的xml文件调用的“roundedbutton.xml”文件。 哪个不应该有问题。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
  android:shape="rectangle" android:padding="10dp">   
 <!--  solid android:color="#834672"--> 
 <gradient android:startColor="#834672" 
           android:endColor="#718C93"
           android:angle="270" />
<stroke android:width="5px" android:color="#06302F" />
<corners android:radius="10dp"/>
</shape>

现在我无法理解我的程序崩溃的原因。

确定。我现在有一个对我有用的答案。我不知道清单,它立即用他的答案留下的“快速蜗牛”代码解决了。

2 个答案:

答案 0 :(得分:2)

基于您的logcat,问题是您尚未在清单文件中定义您的活动。

清单文件向Android系统提供有关您的应用程序的基本信息,这是系统在运行任何应用程序代码之前必须具备的信息。在应用程序运行之前,系统必须知道您的应用程序中有哪些活动,并且它通过清单文件知道。如果您错过了清单文件中的任何活动,则系统会认为该活动不存在。现在,当app运行时,它指向一些系统无法识别的活动。因此,它崩溃了。你可以在这里阅读有关android清单文件的更多信息http://developer.android.com/guide/topics/manifest/manifest-intro.html

我无法支持其他我会选择@fast蜗牛的答案,我想这会解决你的问题。

答案 1 :(得分:1)

好吧

ActivityNotFoundException

表示您尚未在AndroidManifest文件中声明此活动。您需要在清单文件中声明所有活动

错误确切地说明了问题

find explicit activity class {com.example.coffeeshop/com.example.coffeeshop.Login}; have you 
declared this activity in your AndroidManifest.xml?

将此行添加到清单文件

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

最终清单应该看起来像//示例

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.coffeeshop">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".MainActivity" android:label="@string/app_name"></activity>

        <activity android:name=".Login"></activity> <!--add this line -->

    </application>
</manifest>