简体   繁体   English

Android应用程序无法启动活动

[英]Android application failed to start activity

I want to know why it cannot open up new java class. 我想知道为什么它不能打开新的Java类。 When I try to start new activity, it will be crash. 当我尝试开始新活动时,它将崩溃。

public class MainActivity extends ActionBarActivity {
    EditText emailEt;
    TextView registerET;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        emailEt = (EditText) findViewById(R.id.email);
        registerET = (TextView) findViewById(R.id.register);
        registerET.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Log.i("clicks","You Clicked register page");
                Intent myIntent = new Intent(MainActivity.this, RegisterActivity.class);
                startActivity(myIntent);
                MainActivity.this.finish();
            }
        });
    }
    public void OnLogin(View view) {
        String username = emailEt.getText().toString();
        String type = "login";
        BackgroundWorker backgroundWorker = new BackgroundWorker(this);
        backgroundWorker.execute(type, username);
    }

}

It's possible manifests problem? 可能会出现问题吗? Am I put it wrong position for the activity? 我在活动中放错位置了吗?

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.a20_1discussboard">
<uses-permission android:name="android.permission.INTERNET"></uses-permission>"
<application
    android:allowBackup="true"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <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>
</application>
    <activity android:label="@string/app_name" android:name=".RegisterActivity"/>
</manifest>

It look like can be open up new java class, but it still display MainActivity. 看起来可以打开新的Java类,但它仍显示MainActivity。 Error Log: 错误日志:

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.example.a20_1discussboard, PID: 2194
                  java.lang.IllegalStateException: Could not find method onClick(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatTextView with id 'register'
                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:327)
                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284)
                      at android.view.View.performClick(View.java:4780)
                      at android.view.View$PerformClick.run(View.java:19866)
                      at android.os.Handler.handleCallback(Handler.java:739)
                      at android.os.Handler.dispatchMessage(Handler.java:95)
                      at android.os.Looper.loop(Looper.java:135)
                      at android.app.ActivityThread.main(ActivityThread.java:5254)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at java.lang.reflect.Method.invoke(Method.java:372)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

Be sure that you add RegisterActivity to your AndroidManifest.xml inside <application> tag: 确保在<application>标记内将RegisterActivity添加到AndroidManifest.xml

<application ...>

    ...

    <activity
       android:label="@string/app_name"   
       android:name=".RegisterActivity"/>

</application>

Put proper Menifest format: 输入正确的清单格式:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.a20_1discussboard">
<uses-permission android:name="android.permission.INTERNET"></uses-permission>"
<application
android:allowBackup="true"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<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:label="@string/app_name"     
          android:name=".RegisterActivity"/>   //<---here
</application>
</manifest>

Don't call finish() , this caused your crash: 不要调用finish() ,这会导致崩溃:

    registerET.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Log.i("clicks","You Clicked register page");
            Intent myIntent = new Intent(MainActivity.this, RegisterActivity.class);
            startActivity(myIntent);
            //remove finish();
        }
    });

Try declared activity in application in your AndroidManifest.xml like this. 像这样尝试在您的AndroidManifest.xml中的应用程序中声明的活动。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.a20_1discussboard">
<uses-permission android:name="android.permission.INTERNET"></uses-permission>"
<application
    android:allowBackup="true"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <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:label="@string/app_name"
              android:name=".RegisterActivity"/>
</application>
</manifest>

Delete this line from onCreate method: MainActivity.this.finish(); 从onCreate方法中删除以下行: MainActivity.this.finish();

If you want to stop or pause MainActivity, use: 如果要停止或暂停MainActivity,请使用:

@Override
public void onPause() { } 

or 要么

@Override
public void onStop() { }

in MainActivity class. 在MainActivity类中。

Thanks all. 谢谢大家
Add RegisterActivity to AndroidManifest.xml inside <application> tag and remove MainActivity.this.finish() <application>标签内的AndroidManifest.xml添加RegisterActivity并删除MainActivity.this.finish()

It is working now. 现在正在工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM