1

在安卓上。我的活动是这样的。

public class MainActivity extends Activity {

   static TextView textview;
   static int aaa = 1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
    setContentView(R.layout.activity_main);

             textview = (TextView)findViewById(R.id.textView6);

//其他方法,startservice()等。

并且有 BroadcastReceiver 从服务接收标志。

     public static class Receiver extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intents) {
        intents.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        textview.setText("set")//throw null point
                    Log.d("aaa","aaa is" + aaa);

像这样,在 onReceiver 中,textview 为空。作为测试,int aaa 不是空的。

为什么 textview 为空?

编辑 Texttiew xml 是

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >
 <TextView
        android:id="@+id/textView6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/adview"
        android:layout_alignParentLeft="true"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />

并且在 Activity 中使用相同的 textview.settext 方法不是 null。谢谢。

EDIT2 我知道我应该保存这个变量。那么,保存 VIEW 变量的最佳方法是什么?SharedPreferences 似乎无法保存 VIEW 变量。

4

2 回答 2

1

该线程表明具有静态字段可能是一个问题。一般来说,android 会杀死你的应用程序.. 并且在返回时可能不会设置静态变量。

返回应用时的静态变量null

于 2013-02-09T02:27:48.240 回答
0

这很可能是您没有引用正确的 textview 元素。仔细检查布局文件中的 ID。

于 2013-02-09T01:51:24.183 回答