如何在Android中显示新的活动

时间:2012-08-26 20:15:31

标签: android android-activity

这可能看似微不足道,但我不知道我的谷歌搜索中的终止记录是如何以及缺少什么。我已经有一个主要活动,如下所示:

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

public class DroidPlayerActivity extends Activity {

    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.all_songs:
                Toast.makeText(DroidPlayerActivity.this, "Pressed All Songs TextView", Toast.LENGTH_SHORT).show();
                new AllSongsActivity();//nothing shows up
                break;
            case R.id.recently_added:
                Toast.makeText(DroidPlayerActivity.this, "Pressed Recently Added TextView", Toast.LENGTH_SHORT).show();
                break;
            ...
        }

    }
}

在我的onClick(View v)方法中,我检查了哪个TextView已被按下并启动了AllSongsActivity的新实例,但是,没有显示任何内容(活动不可见仍显示我的主要活动) 。 目前,AllSongsActivity类只是一个简单的空白 Activity

import android.app.Activity;
import android.os.Bundle;

/**
 *
 * @author David
 */
public class AllSongsActivity extends Activity{

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

}

因此,为了澄清如何使AllSongsActivity可见,我已经DroidPlayerActivity已经在运行(它是主要的)。

提前致谢

5 个答案:

答案 0 :(得分:2)

您不自行创建活动实例。相反,您致电startActivity()开始活动:

startActivity(new Intent(this, AllSongsActivity.class));

答案 1 :(得分:1)

要从当前的Activity中调用一个新的Activity,您不能只是实例化该Activity的类。您必须使用intent

类似的东西:

http://www.vogella.com/articles/AndroidIntent/article.html

另外你要检查Android官方文档,特别是API指南,它对这个常见问题有很多启示:

http://developer.android.com/guide/components/index.html

答案 2 :(得分:1)

请查看有关Intents的文档。 Intents用于启动android中的另一个活动。

对于前,

Intent intent = new Intent(this, AllSongsActivity.class);
startActivity(intent); // This will start AllSongsActivity activity

答案 3 :(得分:1)

你必须向你想要开始的活动发送一个Intent:

    Intent intent = new Intent(this, AllSongsActivity.class);
    startActivity(intent);

编辑:已经回答了!

答案 4 :(得分:0)

这是你应该做的:

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

public class DroidPlayerActivity extends Activity {

    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.all_songs:
                Toast.makeText(DroidPlayerActivity.this, "Pressed All Songs TextView", Toast.LENGTH_SHORT).show();
                // ---- show next activity ----
                Intent intent = new Intent(DroidPlayerActivity.this, AllSongsActivity.class);
                startActivity(intent);
                break;
            case R.id.recently_added:
                Toast.makeText(DroidPlayerActivity.this, "Pressed Recently Added TextView", Toast.LENGTH_SHORT).show();
                break;
            ...
        }

    }
}