每当我想通过ID查找我的网格布局时,我的应用程序在启动时立即崩溃。这不是错字(我没有任何编译错误)。
这是我在onCreate
方法中声明的第一件事,因此不会崩溃,因为某些其他方法会在调用findViewById
之前尝试对布局进行某些操作。
可能是什么原因?
(我尝试更改其ID,名称...不起作用)
部分代码:
public class MainActivity extends AppCompatActivity {
TextView countdownView, expressionView, scoreView, resultView, goView;
LinearLayout linearLayout;
GridLayout gridLayout;
CountDownTimer countDownTimer;
Random randomGenerator;
Button startGameButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gridLayout = findViewById(R.id.gridLayout);
//other code here}
答案 0 :(得分:0)
我不得不从此更改演员表:
GridLayout gridLayout = findViewById(R.id.gridLayout);
对此:
android.support.v7.widget.GridLayout gridLayout = findViewById(R.id.gridLayout);
答案 1 :(得分:0)
findViewbyId
在android studio 3中已更改。*
引用
findViewById()
签名更改
findViewById()
方法的所有实例现在都返回<T extends View> T
而不是View
。此更改具有以下含义:
这可能会导致现有代码现在具有不明确的返回类型,例如,如果同时存在someMethod(View)
和someMethod(TextView)
来调用findViewById()
的结果。
使用Java 8源语言时,当返回类型不受限制时(例如,assertNotNull(findViewById(...)).someViewMethod())
,这需要显式转换为View。
非最终findViewById()
方法(例如Activity.findViewById())
)的覆盖将需要更新其返回类型。
EditText message=super.findViewById(R.id.txtmessage);
我是一名新的android学习者。在我的学习中直接尝试视频代码
答案 2 :(得分:0)
通过此
androidx.gridlayout.widget.GridLayout gridLayout = findViewById(R.id.gridLayout);
答案 3 :(得分:-2)
更改
来自
gridLayout = findViewById(R.id.gridLayout);
到
gridLayout = (GridLayout) findViewById(R.id.gridLayout);
您应该从findViewById
函数强制转换结果
答案 4 :(得分:-2)
要么像他回答中提到的A.El Saeed那样投掷
gridLayout = (GridLayout)findViewById(R.id.gridLayout);
或发布您的XML代码也是因为有时,您的XML代码中可能会出现一些错字,或者您使用的XML grid layout id
与XML中定义的不同