【问题标题】:Android application failed to start activityAndroid 应用程序无法启动活动
【发布时间】:2017-05-31 00:59:23
【问题描述】:

我想知道为什么它不能打开新的java类。 当我尝试开始新的活动时,它会崩溃。

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

}

可能是清单问题?我把它放在了错误的位置吗?

<?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>

看起来可以打开新的java类,但它仍然显示MainActivity。 错误日志:

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)

【问题讨论】:

  • 您遇到的错误是什么?您是否在AndroidMenifest 中定义了活动?
  • 如果您正在寻求帮助,请发布logcat
  • 你能给我们找一只原木猫吗?我们可以用 logcat 解决它。
  • 错误消息:W/EGL_emulation:eglSurfaceAttrib 未实现 W/OpenGLRenderer:无法在表面 0x7f402ad26640 上设置 EGL_SWAP_BEHAVIOR,错误=EGL_SUCCESS

标签: java android next


【解决方案1】:

输入正确的清单格式:

<?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>

不要打电话给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();
        }
    });

【讨论】:

    【解决方案2】:

    尝试像这样在您的 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>
    

    【讨论】:

      【解决方案3】:

      确保将RegisterActivity 添加到AndroidManifest.xml 内的&lt;application&gt; 标记中:

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

      【讨论】:

        【解决方案4】:

        从 onCreate 方法中删除这一行:MainActivity.this.finish();

        如果要停止或暂停 MainActivity,请使用:

        @Override
        public void onPause() { } 
        

        @Override
        public void onStop() { }
        

        在 MainActivity 类中。

        【讨论】:

          【解决方案5】:

          谢谢大家。
          将 RegisterActivity 添加到 &lt;application&gt; 标签内的 AndroidManifest.xml 并删除 MainActivity.this.finish()

          它现在正在工作。

          【讨论】:

            猜你喜欢
            • 2016-04-21
            • 1970-01-01
            • 2011-10-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多