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覆盖了他的真实活动名称,可能会更快。这里的内存效率很可能微不足道。此外,这种方法使得为多个按钮添加单独的侦听器更加困难。就个人而言,我更喜欢为听众使用匿名类。我同意,我更喜欢你的评论。