2011-05-29 90 views
0

基本上我有一个textview,当创建应用程序时,它将字符串设置为textviews文本并不难,但是当我在我的应用程序上运行时遇到强制关闭错误电话。关于声明TextView和ToggleButton的“强制关闭”错误

TextView sdcard=(TextView)findViewById(R.id.sd_textview); 
sdcard.setText(R.string.not_mounted); 

然后我有一个切换按钮也

ToggleButton silent=(ToggleButton)findViewById(R.id.silentbutton); 
silent.setChecked(false); 

一个错误,我有我的所有其他按钮/ textviews错误,任何人都可以帮助,请?

编辑: 因为我是新成员,我不能上传图片,:( 链接imgshack http://imageshack.us/photo/my-images/849/unledggp.png/

如果整个TextView的代码段

if  (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_UNMOUNTED)) { 

TextView sdcard=(TextView)findViewById(R.id.sd_textview); 
sdcard.setText(R.string.not_mounted); 

} 

的OnCreate功能

public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 

checkSD(); 
checkRing(); 
checkWifi(); 
checkBt(); 

} 
+0

可以PLZ加logcat的错误,? – Houcine 2011-05-29 17:41:31

+0

发布Logcat消息和布局。你有没有调用'setContentView()'? – dmon 2011-05-29 17:41:34

+0

您可以发布这些代码片段显示的方法的其余部分以及您的布局吗?这些信息很难帮助。这通常是因为'findViewById'返回'null',这意味着没有找到具有给定ID的视图。没有更多的上下文,它将很难确定为什么。 – adamp 2011-05-29 17:42:40

回答

1

查找的sd_textview所有实例,并确保你想引用一个是TextView。如果您想了解更多的清晰度可以调试你的代码,看到实际上是由于没有铸造成TextView返回什么对象:

View sdcard = findViewById(R.id.sd_textview); //debug this 
//you can also log the View object to see the type 
Log.d("Test", "" + sdcard); 
+0

相同您能否解释一下我可以如何调试setText? – Test2e31234234 2011-05-29 18:11:09

+0

您使用的是Eclipse吗?您可以添加断点(双击相关行上的左边空白处),然后“调试”您的项目(vs普通“运行”),即其播放图标旁边的错误图标。一旦你的代码达到了这一点,调试器会弹出,你可以查看存储在'sdcard' View中的值。 – dmon 2011-05-29 18:15:38

+0

是的我没有看到任何TextView试图被引用... – Test2e31234234 2011-05-29 18:22:13

0

看着你的错误日志(假设它有正确的错误日志),你在中有一个ClassCastException方法。编辑你的问题,并包括所有的onCreate方法和所有的checkWifi方法,但我希望你使用多个视图相同的ID。

+0

好吧,我会将它广告到主文章 – Test2e31234234 2011-05-29 17:54:14

+0

谢谢你的帮助。 – Test2e31234234 2011-05-29 18:27:52

0

我能想到的两件事情(虽然看到更多的代码会有所帮助)。

确保您已拨打setContentView(R.layout.main)(或任何您的布局文件被称为)。在尝试使用findViewById(...)之前,请执行此操作。

其次sdcard.setText(R.string.not_mounted);在这个声明R.string.not_mounted是一个资源ID(INT),而不是一个字符串。您将需要使用...

sdcard.setText(getString(R.string.not_mounted)); 
+0

即使使用getString,我仍然得到并强行关闭 – Test2e31234234 2011-05-29 18:01:07

+0

@Ciehanski:发布您的main.xml – Squonk 2011-05-29 18:12:18

+0

我检查了它,它声明了sd_textview。与R.java/ – Test2e31234234 2011-05-29 18:36:40