java.lang.IllegalStateException:在onClick的活动类com.test.apps.test.MainActivity中找不到方法ExitApp(View)

时间:2015-05-14 20:04:12

标签: java android

所以我第一次使用Android Studio。我有两个活动,当主活动加载它检查登录标志集时,如果不是,则加载登录活动。

然而,当我在Login活动中并且我使用OnClick按钮来调用该Activity中的方法时出于某种原因,java不会在该Activity中查找它在Main中查找并抛出以下错误:

java.lang.IllegalStateException: Could not find a method ExitApp(View) in the activity class com.test.apps.test.MainActivity for onClick

我确定我只是缺少一些我缺少的设置,我的理解是java首先搜索当前的类而不是其父类,为什么我的第二个Activity中的按钮甚至查看我的主要活动吗

的AndroidManifest.xml

<activity
android:name=".MainActivity"
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=".LoginActivity"
        android:label="@string/title_activity_login"
        android:windowSoftInputMode="adjustResize|stateVisible" >
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
        </intent-filter>
    </activity>

MainActivity.Java

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String LoggedIn = preferences.getString("Logged_In", "");
    if (LoggedIn.equals("")) {
       Intent intent = new Intent(this, LoginActivity.class);
       startActivity(intent);
    }
    else {
        setContentView(R.layout.activity_main);
    }
}

LoginActivity.java

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import android.view.View.OnClickListener;
import android.app.Activity;

public class LoginActivity extends ActionBarActivity {
private EditText username;
private EditText password;

public void ExitApp(View view){
    finish();
}

activity_login.xml

<Button
android:layout_width="250dp"
android:layout_height="50dp"
android:text="Login"
android:id="@+id/btnLogin"
android:layout_below="@+id/txtPassword"
android:layout_centerHorizontal="true"
android:layout_marginTop="48dp"
android:nestedScrollingEnabled="false"
android:onClick="ExitApp"
android:clickable="true"/>

任何帮助都会很棒......

4 个答案:

答案 0 :(得分:0)

尝试使用Intent停止您的应用

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

答案 1 :(得分:0)

您是否实际在LoginActivity的onCreate方法中设置了内容视图?我假设您只是为了简洁而在此处删除它,但是可能发布完整的LoginActivity和MainActivity代码将有助于深入了解它。除非我遗漏了一些细节,否则你发布的所有内容看起来都应该运作得很好。

否则,在Activity中使用findViewById()和addOnClickListener()而不是在布局xml中执行它确实没有缺点。

    View loginButton = findViewById(R.id.btnLogin);
    loginButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ExitApp();
        }
    });

答案 2 :(得分:0)

ExitApp() MainActivity:

中不存在您的方法Activity
Could not find a method ExitApp(View) in the activity class com.test.apps.test.MainActivity for onClick  

如果您想从ExitApp()执行方法LoginActivity,请加载正确的布局activity_login.xml

public class LoginActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login.xml);
    }

答案 3 :(得分:0)

因此,解决方案是使用.MainActivity中的以下代码来正确“启动”Login Activity并告诉java查看“活动”活动:

Intent intent = new Intent(this, LoginActivity.class); 
startActivity(intent); 

编辑问题以反映正确的工作代码