当我在onCreate方法之外声明TextView时,我的应用程序停止了,我这样做是因为我需要从其他方法访问TextView变量。我会感激任何帮助。
public class MainActivity extends ActionBarActivity {
TextView textView = (TextView)findViewById(R.id.defaultText);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
textView.setText("Hello");
}
}
答案 0 :(得分:2)
My application stops when I declare the TextView outside the onCreate method
这是因为布局尚未在您的活动中夸大,从而导致您的应用崩溃,我 100%确定错误为NPE
,当您在此处设置文字时:{{1 }}
<强>解决方案:强>
始终在textView.setText("Hello");
之后TextView
内Oncreate
初始化setContentView
并将textView
对象作为全局实例。
public class MainActivity extends ActionBarActivity {
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
textView = (TextView)findViewById(R.id.defaultText);
textView.setText("Hello");
}
}
答案 1 :(得分:2)
您无法在函数外声明视图。
TextView tv;
在OnCreate中:
tv = (TextView)findViewById(...)
答案 2 :(得分:0)
正如其他人指出的那样,你得到的错误是因为包含TextView作为孩子的视图尚未被夸大。您应声明强引用,然后在onCreate()方法上实例化该变量。如果你坚持使用这样的代码,那么我建议你看看依赖注入。
答案 3 :(得分:0)
要做到这一点:
TextView textView =(TextView)findViewById(R.id.defaultText);
首先将内容视图设置为活动,否则将无效。
答案 4 :(得分:-1)
我遇到了这个问题,并通过使用(tag)作为视图(myTextView.tag
)解决了这个问题
您可以从此处进一步了解此属性:
What is the main purpose of setTag() getTag() methods of View?
我的意思是,我在onCreate
方法之外声明了一个称为(counter)的变量,然后在需要使用他的标记的任何地方找到我的视图。
希望有帮助