有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android应用程序无法启动活动

我想知道为什么它不能打开新的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:安卓="http://schemas.安卓.com/apk/res/安卓"
package="com.example.a20_1discussboard">
<uses-permission 安卓:name="安卓.permission.INTERNET"></uses-permission>"
<application
    安卓:allowBackup="true"
    安卓:label="@string/app_name"
    安卓:theme="@style/AppTheme" >
    <activity
        安卓:name=".MainActivity"
        安卓:label="@string/app_name" >
        <intent-filter>
            <action 安卓:name="安卓.intent.action.MAIN" />
            <category 安卓:name="安卓.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
    <activity 安卓:label="@string/app_name" 安卓: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 安卓:onClick attribute defined on view class 安卓.support.v7.widget.AppCompatTextView with id 'register'
                      at 安卓.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:327)
                      at 安卓.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284)
                      at 安卓.view.View.performClick(View.java:4780)
                      at 安卓.view.View$PerformClick.run(View.java:19866)
                      at 安卓.os.Handler.handleCallback(Handler.java:739)
                      at 安卓.os.Handler.dispatchMessage(Handler.java:95)
                      at 安卓.os.Looper.loop(Looper.java:135)
                      at 安卓.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.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
                      at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:698)

共 (5) 个答案

  1. # 1 楼答案

    在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>
    
  2. # 2 楼答案

    确保将RegisterActivity添加到AndroidManifest.xml<application>标记中:

    <application ...>
    
        ...
    
        <activity
           android:label="@string/app_name"   
           android:name=".RegisterActivity"/>
    
    </application>
    
  3. # 3 楼答案

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

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

    @Override
    public void onPause() { } 
    

    @Override
    public void onStop() { }
    

    在活动课上

  4. # 4 楼答案

    谢谢大家
    将RegisterActivity添加到AndroidManifest.xml内的<application>标记并删除MainActivity.this.finish()

    它现在正在工作

  5. # 5 楼答案

    放置正确的Menifest格式:

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