当我的设备调试Android应用程序崩溃
问题描述:
你好,我有一个奇怪的问题 我是新的Android应用程序开发 我连接我的设备(三星A5)Android Studio使用它,而不是使用模拟器。 当我跑的应用当我的设备调试Android应用程序崩溃
package com.example.bob.myfirstapp;
import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button b = (Button)findViewById(R.id.button);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setContentView(R.layout.contact);
}
});
}
}
它运行完全 但是当我添加此:按钮BC =(按钮)findViewById(R.id.button);我在运行它时崩溃了mainActivity类中的 。
package com.example.bob.myfirstapp;
import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends Activity {
/***********************************************/
Button bc = (Button)findViewById(R.id.button);
/**********************************************/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button b = (Button)findViewById(R.id.button);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setContentView(R.layout.contact);
}
});
}
}
哪里出了问题,我应该怎么做才能解决它 非常感谢你提前
答
首先你需要了解Java属性如何initialized的请向我解释。
接下来,您需要了解findViewById
的工作原理。它查找从DecorView
又名root view
开始的视图,该视图通过调用setContentView
进行初始化。现在
,你会发现,
Button bc = (Button)findViewById(R.id.button);
setContentView
调用之前实际上得到执行。这会给你带来麻烦。
非常感谢你的回答非常有价值,并让我明白我的错误在哪里:) –
@ N.Belhadj很乐意帮忙 – j2ko