Android 从onClick类启动活动

Android 从onClick类启动活动,android,android-intent,Android,Android Intent,我有一个按钮,我正在给它分配一个OnClickListener。因此,我想开始一个新的意图。为了做到这一点,我必须参考活动。我知道的唯一一种方法是通过类似以下代码的方式来实现。这是从点击按钮开始意图的最佳方式吗?还有,这会对记忆产生什么影响 public class SomeActivity extends FragmentActivity { private final FragmentActivity self=this; @Override protecte

我有一个按钮,我正在给它分配一个
OnClickListener
。因此,我想开始一个新的意图。为了做到这一点,我必须参考活动。我知道的唯一一种方法是通过类似以下代码的方式来实现。这是从点击按钮开始意图的最佳方式吗?还有,这会对记忆产生什么影响

public class SomeActivity extends FragmentActivity  {

    private final FragmentActivity self=this;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);
        findViewById(R.id.startButton).setOnClickListener(new View.OnClickListener(){
            public void onClick(View v) {
                Intent intent=new Intent(self,someClass.class);
                startActivity(intent);
            }
        });

}

另一种方法是调用:
findViewById(R.id.startButton).setOnClickListener(this)
然后使您的
活动
实现
视图。OnClickListener
并以以下方式实现方法
onClick(视图v)

public void onClick(View v) {
    switch(v.getId()) {
        case R.id.startButton:
            Intent intent=new Intent(self,someClass.class);
            startActivity(intent);
            break;

        // Handle click on other views

    }
}

它可以防止实例化侦听器,并且对于内存消耗来说应该更好一些。

实现这一点的最佳方法是简单地传递
ActtivityName。这是这样的
,如下所示:

public class SomeActivity extends FragmentActivity  {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);
        findViewById(R.id.startButton).setOnClickListener(new View.OnClickListener(){
            public void onClick(View v) {
                Intent intent=new Intent(SomeActivity.this,someClass.class);
                startActivity(intent);
            }
        });

}

您可以将变量
self
替换为
someActivity。顺便说一下,您应该以大写字母开头类名称(
SomeActivity
,而不是
SomeActivity
)。除了上面所说的,你的代码是正确的。哇,这很简单。。。唉。不知道这是否能提高我的内存使用率。谢谢把它作为答案贴出来,我会接受的。@Louis,他可能用camelCase覆盖了他的真实活动名称,可能会更快。这里的内存效率很可能微不足道。此外,这种方法使得为多个按钮添加单独的侦听器更加困难。就个人而言,我更喜欢为听众使用匿名类。我同意,我更喜欢你的评论。