java中的变量赋值语法
我试图同时学习Android开发和java 在此代码中:java中的变量赋值语法,java,android,Java,Android,我试图同时学习Android开发和java 在此代码中: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_layout); Button b = (Button)findViewById(R.id.button1); b.setOnClickLis
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_layout);
Button b = (Button)findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(ActivityA.this, ActivityB.class);
startActivity(intent);
}
});
}
谁能解释一下按钮b=。。。行-b是按钮的别名,为什么(按钮)在findViewById之前?它被调用。这里
findViewById(R.id.btn_second)
返回一个类型为Button的视图,因此我们需要将其转换为Button类型
Button b = (Button) findViewById(R.id.btn_second);
没有(按钮)
findViewById(R.id.btn\u秒)将返回一个视图。
Android用户界面对象都来自一个名为
View
(文档)的类型。b是类型按钮的变量
(按钮)表示findViewById(…)的返回值被强制转换为按钮。您必须将此
视图
转换为按钮
小部件,它来自id为按钮1的活动布局
Button b = (Button)findViewById(R.id.button1);
findViewById()
方法返回一个视图
,它是按钮的超类。要将视图用作按钮,我们需要对其进行类型转换。这是因为按钮的某些方法(子类)在视图(超类)中可能不可用 查看findViewById
方法的定义:
它返回视图
类型,而不是按钮。
但是View
class有很多子类:
按钮、编辑文本、文本视图等。。。
因此(按钮)
意味着您将常规视图
类型强制转换为required,该类型在XML布局中定义。当变量类型写在赋值前面时,它被称为类型转换:
因此,在这种情况下:
float floatVariable = 10.2;
int test = (int) floatVariable;
浮点被强制转换为int。这是必要的,因为除非显式转换,否则int变量不能接受浮点
就你而言:
(Button)findViewById(R.id.button1)
方法findViewById()返回一个值,然后将该值转换为按钮。这是必要的,因为该方法不返回按钮 方法findViewById
返回一个视图。使用此代码,您尝试查找给定id的按钮:
Button b = (Button) findViewById(R.id.button1);
您需要执行强制转换以将结果分配给按钮变量。如果您没有将结果强制转换为按钮,您将无法在b中调用“类按钮”中定义的任何方法。请各位不要在没有留下您否决此问题的原因的情况下进行否决。谢谢大家的回答!抱歉,大家都觉得这是个糟糕的问题,我解释过我对java和android都是新手。所以Button、EditText等,如果可以的话,都是变量类型,就像INT或Array一样?java中的每个方法都有返回类型,可以是:1)简单类型-INT、double;2) 类类型-按钮、视图、活动、某些自定义类型;3) 数组-int[],double[],Button[];4) 无退货类型-作废;Java中有原语和对象。int是一个基元,array是一个对象。按钮、EditText,它们都是对象,这本质上意味着它们是类的实例(基本上)。
Button b = (Button) findViewById(R.id.button1);