Java Android:如何通过按钮启动活动?

Java Android:如何通过按钮启动活动?,java,android,button,android-activity,Java,Android,Button,Android Activity,Noob Android开发者在这里我更多的是图形而不是代码,但我想我应该开始做更多的编码。无论如何,我在我的主活动页面上有一些按钮,我想要它,所以当点击按钮时,它会打开另一个类/活动。我已经尝试了所有我查找过的方法,但有些方法仍然不起作用,当我单击模拟器中的按钮时,它什么都不起作用,不强制停止或什么都不起作用,请有人给我指出正确的方向 按钮所在主页的代码: public class StartingPoint extends Activity { protected void onCreate

Noob Android开发者在这里我更多的是图形而不是代码,但我想我应该开始做更多的编码。无论如何,我在我的主活动页面上有一些按钮,我想要它,所以当点击按钮时,它会打开另一个类/活动。我已经尝试了所有我查找过的方法,但有些方法仍然不起作用,当我单击模拟器中的按钮时,它什么都不起作用,不强制停止或什么都不起作用,请有人给我指出正确的方向

按钮所在主页的代码:

public class StartingPoint extends Activity {
protected void onCreate(Bundle aim) {
    super.onCreate(aim);

    setContentView(R.layout.main);

    final Button bSL = (Button) findViewById(R.id.bSongList);
    bSL.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            Intent SongList = new Intent(StartingPoint.this, SongList.class);
            StartingPoint.this.startActivity(SongList);
        }
    });
}
}
显示

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="myname.appname"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Black.NoTitleBar" >
        <activity
            android:name=".Splash"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" >
            <intent-filter>
                <action android:name="myname.appname.SPLASH" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".StartingPoint"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="myname.appname.STARTINGPOINT" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity
            android:name=".SongList"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="myname.appname.SONGLIST" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    </application>

</manifest>
试试这个:

Intent songList = new Intent(StartingPoint.this, SongList.class);
startActivity(songList);
你有什么错误吗?您需要添加在清单中创建的每个活动。如果您有两个活动,并且清单中只有主活动,那么这可能是您的问题

再想一想,我相信你的清单是错的。看看这个。主菜单(您的起点)和第二个菜单:

<activity android:name="com.activities.Main">
        <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>  
    </activity>
    <activity android:name="com.activities.Menu"></activity>

请尝试此清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="myname.appname"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Black.NoTitleBar" >
        <activity
            android:name=".Splash"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" >
            <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />               
            </intent-filter>
        </activity>
        <activity
            android:name=".StartingPoint"
            android:label="@string/app_name" >           
        </activity>
        <activity
            android:name=".SongList"
            android:label="@string/app_name" >            
        </activity>
    </application>

</manifest>
<activity android:name=".SongList"></activity>

您不需要在每个活动上添加筛选器。我知道你只有一个进入活动,那就是启动屏幕。但是,您可能需要更改清单以将“.Splash”和所有其他活动更改为包括包在内的完整路径

Intent SongList = new Intent(StartingPoint.this, SongList.class);
            startActivity(SongList);
在清单类型中

 <application .....>
<activity android:name=".CustomSurfaceView"></activity>
</application>

有关代码,请尝试以下操作:

Intent songListIntent = new Intent(this, SongList.class);
StartingPoint.this.startActivity(songListIntent);
至于舱单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="myname.appname"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Black.NoTitleBar" >
        <activity
            android:name=".Splash"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" >
            <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />               
            </intent-filter>
        </activity>
        <activity
            android:name=".StartingPoint"
            android:label="@string/app_name" >           
        </activity>
        <activity
            android:name=".SongList"
            android:label="@string/app_name" >            
        </activity>
    </application>

</manifest>
<activity android:name=".SongList"></activity>

//您的歌曲列表的软件包名称是什么

正如你的原木猫所示

01-02 21:59:50.473: I/ActivityManager(75): Starting: Intent { cmp=myname.appname/.SongList } from pid 681
01-02 21:59:52.953: I/ActivityManager(75): Displayed myname.appname/.SongList: +2s351ms
//在manifest.xml中的活动中使用完整的包名

<activity
        android:name="myname.appname.SongList"
        android:label="@string/app_name" >       
    </activity>

您的活动未启动,因为其中包含NullPointerException。(第10行)。当您对布局中不存在的内容执行findViewById时,很可能是这样

当面对这类问题时,阅读红线通常是有帮助的。它基本上是这样说的:“嘿!当你试图启动它时,歌曲列表第10行中有一个空对象!”

编辑 这是行不通的。这是在对象初始化期间完成的,远早于调用onCreate,因此远早于调用setContentView


设置视图后必须初始化小部件。

请发布日志文件,下一个活动的名称相同。这可能就是问题所在。改名。同时将最后一行更改为startActivity(intent);您是否尝试过移动setContentView();在代码的末尾?也在这里发布您的错误日志。不要因为您觉得没有得到足够的关注而问同样的问题。如果你想在你的问题上获得更多的关注,可以随意使用旁边的Facebook/Tweet图标,或者,当你有足够的声誉时,在这个问题上悬赏。如果你发布多次,问题将被标记,可能会导致版主采取进一步的行动。更改为该选项与我的启动屏幕冲突,因此我不得不更改为返回。带按钮的活动是第二次运行,启动屏幕是第一次运行,然后在6秒后运行,然后用按钮运行活动。您到底更改了什么?该变量的名称与另一个类冲突,因此您应该在camelCase中启动该变量,因此更改为songList而不是songList。查看我的编辑,了解清单的外观立即接收此错误,01-03 10:06:06.907:E/AndroidRuntime(462):java.lang.RuntimeException:无法实例化活动组件信息{myname.appname/myname.appname.SongList}:java.lang.NullPointerException请发布完整的堆栈跟踪或获取该错误的行。我相信问题可能是你的清单上有.ActivityName。尝试使用“com.package.activivyname”。这不是问题所在,正如您在视频中看到的那样。问题在于活动没有加载是因为有问题的活动内部存在某种东西,而不是托管按钮以启动活动的活动的代码或清单?