【问题标题】:Android image button open new activityAndroid图像按钮打开新活动
【发布时间】:2014-07-02 01:17:20
【问题描述】:

我想从 android 中的图像按钮打开新活动。我尝试使用此代码,但不起作用。

主类

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.content.Context;
import android.view.View;
import android.widget.ImageButton;


public class main extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    openMenu();
}

public void openMenu() {

    final Context context = this;

    ImageButton imgbtn = (ImageButton) findViewById(R.id.menu_button);

    imgbtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            Intent menu = new Intent(context, menu.class);
            startActivity(menu);

        }

    });
}

}

菜单类

public class menu extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.menu);
}

错误: android.content.ActivityNotFoundException:找不到明确的活动类 {dev.com.test/dev.com.test.menu};您是否在 AndroidManifest.xml 中声明了此活动? 我的回答:是的

<application
    android:allowBackup="true"
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".main"
        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>

【问题讨论】:

    标签: android android-intent android-activity imagebutton


    【解决方案1】:

    只要确保你的 AndroidManifest 看起来像这样

        <application
             android:allowBackup="true"
             android:icon="@drawable/icon"
             android:label="@string/app_name"
             android:theme="@style/AppTheme" >
        <activity
        android:name=".main"
        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=".menu">      // you need to add these 3 lines inside application tag.
        </activity>
    
    </application>
    

    错误android.content.ActivityNotFoundException: Unable to find explicit activity class {dev.com.test/dev.com.test.menu}; have you declared this activity in your AndroidManifest.xml? 非常直截了当。每当您创建新活动时,请确保该活动已在 AndroidManifest.xml 中的 application 标记内注册。

    【讨论】:

      【解决方案2】:

      不,您尚未将其包含在清单中。你所包括的是主要活动。但是您必须包含所有活动,包括您尝试创建的新活动。这是一个示例(您可能需要更改包名称):

      <application
      android:allowBackup="true"
      android:icon="@drawable/icon"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
          <activity
          android:name=".main"
          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="com.test.menu"
          android:label="My second activity"
          android:parentActivityName="com.test.main" >
              <meta-data
                  android:name="android.support.PARENT_ACTIVITY"
                  android:value="com.test.main" />
          </activity>
      
      </application>
      

      【讨论】:

        【解决方案3】:
         ImageButton mainButton = (ImageButton) findViewById(R.id.imageButton);
                mainButton.setOnClickListener(new View.OnClickListener() {
        
                    @Override
                    public void onClick(View v) {
        
                        Intent intent = new Intent(context, MainActivity2.class);
                        startActivity(intent);
        
                    }
                });
        

        【讨论】:

        • 也许您可以添加一些文字来描述您的解决方案,以改进您的答案
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-28
        • 1970-01-01
        相关资源
        最近更新 更多