簡體   English   中英

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

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

因此,我是第一次使用Android Studio。 我有兩個活動,當“主要活動”加載時,它會檢查登錄標志集,如果沒有,則會加載“登錄活動”。

但是,當我處於登錄活動中時,我使用按鈕OnClick調用該活動中的方法,由於某種原因,java不在該活動中查找其在Main中的查找,並拋出以下錯誤:

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

我確定我只是缺少一些設置,我的理解是java首先搜索當前類而不是其父類, 為什么我的Second Activity中的一個按鈕甚至在Main 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"/>

任何幫助都會很棒...

嘗試以意圖停止您的應用

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

您實際上是在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();
        }
    });

您的Activity MainActivity中不存在ExitApp()方法:

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);
    }

因此,解決方案是在.MainActivity中使用以下代碼來正確地“啟動” Login Activity,並告訴Java查找該“ active”活動:

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

已對問題進行編輯以反映正確的工作代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM