2012-01-17 92 views
1

与此代码,我的计划只是强制关闭(错误)我如何将一个数字/字符串存储到R.string.xx中?

***public View x = findViewById(R.string.nfoname);*** 
@Override 
public void onCreate(Bundle savedInstanceState) {  
super.onCreate(savedInstanceState);  
setContentView(R.layout.information); 
//edittext 
***final EditText infoname=(EditText)findViewById(R.id.infoname);*** 

//clear,confirm 
Button clear = (Button)findViewById(R.id.buttonclear); 
Button confirm = (Button)findViewById(R.id.buttonconfirm); 

//clear button 
clear.setOnClickListener(new View.OnClickListener() {  
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     infoname.setText(""); 
    } 
}); 
//confirm button 
confirm.setOnClickListener(new View.OnClickListener() {  
    public void onClick(View v) { 

     ***x=(View) infoname.getText();*** 
    } 
}); 
} 

了一个与*是错误的来源

程序功能: 如果用户点击确认,他的名字将设置为R.string.nfoname ,然后通过TextView x = setText(R.string.nfoname);

回答

2

我不确定是否可以将文本保存到R.string。这是编译器为您创建的生成类。它与你的apk包装在一起。将资源看作翻译的一种手段,并将文本呈现在屏幕上。

我想你想要做的是将用户输入保存为SharedPreference或数据库。

请参阅:SharedPreferences关于android文档的示例用法。

+0

感谢, 我已经使用这个.. TextView的X =(TextView的)findViewById(); x.setText(“hello”+ getString(R.string.nfoname)); 它工作得很好,但如何设置字符串? 在我心中的一个抽象是类似于 idontknow x =(idontknow)findViewById(R.string.stringname); 这样,只要我改变x的R.string.stringname也会改变 – 2012-01-17 02:12:33

+0

我想这是正确的,好吧关闭研究sharedpreferences – 2012-01-17 02:45:43

0

至少在变量infoname范围的情况下,最有可能导致应用程序抛出错误。 infoname是函数onCreate()的局部变量,而不是类的实例变量,因此它不能被onClick()方法访问,因为它们是匿名类的一部分。

我会问的另一件事是为什么你标记infoname为最终?当onCreate()退出时它超出了范围,所以如果它被改变了,你可以看到谁改变了它,因为它只在方法执行时存在。

0

您无法将值设置为R.string.xxx,因为所有这些值都是常量,非常像只读内容。如果你要使用编辑文本的价值,另一个布局使用类变量或intent.putextra()

来到UR源代码,我看到这个

public View x = findViewById(R.string.nfoname); 

如何才能鉴于R.String发现?这应该是R.id.

final EditText infoname =(EditText)findViewById(R.id.infoname); 为什么这个editText必须是最终的?

***x=(View) infoname.getText();*** 

你只需要使用infoname.getText().toString()你会得到EDITTEXT当前的文本字符串值。 老兄,你可以做简单的东西。

0
public View x = findViewById(R.string.nfoname); 

这可不行的不仅是你试图找到一个View使用R.string资源ID,你setContenView(...)做之前它被称为在onCreate(...)方法。即使您使用了有效的View资源ID,例如R.id.infoname,那么x将为null,因为内容视图尚未虚增。

final EditText infoname=(EditText)findViewById(R.id.infoname); 

除了毫无意义的使用final这个should'nt只要R.id.infoname实际上是一个EditText的资源ID会出现问题。

x=(View) infoname.getText(); 

不仅将xnull,而是基于一个EditText调用getText()返回Editable这不是View也不可能将它转换为View。即使您使用getText().toString()这是从EditText获取文本的正确方法,仍不可能将String转换为View

另外,作为本...

TextView的X =的setText(R.string.nfoname);

它必须是...

TextView x = (TextView) findViewById(<some id>); 
x.setText(getString(R.string.nfoname)); 
相关问题