2015-05-14 42 views
0

所以我第一次使用Android Studio。我有两个活动,当主活动负载它检查登录标志集,如果没有,那么它会加载登录活动。java.lang.IllegalStateException:在onClick的activity类com.test.apps.test.MainActivity中找不到方法ExitApp(View)

但是,当我在登录活动中,并且我使用一个按钮OnClick来调用该Activity中的某个方法时,由于某种原因,java没有在该活动中寻找Main,并抛出以下错误:

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

我敢肯定,我只是缺少一些设置我的思念,我的理解是Java首先搜索当前类比它的父类,为什么是我的第二个活动的按钮,即使在看我的主要活动?

的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"/> 

任何帮助将是巨大的......

+0

能否请你分享1.相关标签在AndroidManifest.xml 2.你设置什么布局在onCreate(...)中使用setContentView(...)3。意图您正在使用从MainActivity导航 - > LoginActivity – Mithun

+0

因此,解决方案是在.MainActivity中使用以下代码来正确“启动”登录活动,并告诉Java看起来“活跃”活动“Intent intent = new Intent (这个,LoginActivity.class); ' – Mike

+0

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

回答

0

你的方法ExitApp() doesn't在Activity MainActivity存在:

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

如果你想从LoginActivity加载正确的布局activity_login.xml

public class LoginActivity extends ActionBarActivity { 

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

我正在onCreate中加载该布局...仍然没有 – Mike

0

尝试用一个Intent

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

停止应用程序只是我用来测试它的一种方法... – Mike

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(); 
     } 
    }); 
+0

我想明显的原因保持登录代码在正确的活动..我试图找出是否有一个“路径”,首先搜索 – Mike

+0

@Mike我刚刚看到你解决了这个问题。您应该接受答案或发布自己的答案并接受答案,这样人们就不会一直试图提供帮助,特别是现在您的帖子中已经有了工作代码。我花了一段时间试图发现一个问题(并且在看到你已更新该帖子以包含工作代码之前,想着“它究竟是什么问题?!”)。 – ajpolt

0

因此,解决办法执行方法ExitApp()是在.MainActivity中使用以下代码来正确“启动”登录活动,然后tel升Java来看看在“活动”活动:

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

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

相关问题