我刚刚开始 Android 开发,我相信你可以帮忙(我的英语不好)
我有一个主要 Activity ,在某个时刻我想调用另一个 Activity ,其中想要用一些消息更改 TextView 。此时,如果我不输入,我会得到一个空指针异常 setContentView(R.layout.register);
但是当我放置该行时,我在一毫秒内正确地看到了带有新文本“Android2”的注册 Activity ,然后再次跳转到没有文本的注册 Activity 。我的意思是我画了两次。 我希望我已经解释得足够多了。
问题是我必须将 setcontentview 放在哪里以及使用什么布局。
非常感谢你,丹尼尔
我向您展示一些代码:
我的主要 Activity 有这个方法:
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK)
{
Intent i = new Intent(this, register.class);
startActivity(i);
setContentView(R.layout.register);
TextView text = (TextView) findViewById(R.id.texto);
try {
text.setText("Android2");
}catch(Exception e) {
Log.i("Log", e.getMessage()+"Error!"); // LogCat message
}
}
//super.onActivityResult(requestCode, resultCode, data);
}
我的第二个 Activity 类称为注册:
public class register extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.register);
}
}
注册接口(interface)为register.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/about_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/register" />
<TextView
android:id="@+id/texto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/continue_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/save" />
<Button
android:id="@+id/new_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/repeat" />
</LinearLayout>
</LinearLayout>
最佳答案
您基本上所做的事情如下:
- 您准备好开始另一项 Activity 的 Intent
- 您开始了您准备 Intent 的 Activity
- 您将当前 Activity 的内容设置为 R.layout.register
- 您获得了textView(在当前 Activity 上)
- 您将textView的文本设置为Android2
并且,此时屏幕上出现了新的 Activity 。请注意,您的代码不正确,因为您在当前 Activity 中操作 UI 元素,并且您期望新启动的 Activity 发生更改。
移动此代码
TextView text = (TextView) findViewById(R.id.texto);
try {
text.setText("Android2");
}catch(Exception e) {
Log.i("Log", e.getMessage()+"Error!"); // LogCat message
}
到注册 Activity 的 onCreate() 方法。
顺便说一句,通常,当您创建一个类时,根据标准,它的名称应该以大写字母开头。
关于Android SetText 空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10266433/