2012-02-13 56 views
0

时,我有一个布局文件(layout/my_test.xml):NullPointerException异常:设置TextView的价值

<TextView 
     android:id="@+id/my_title" 
     android:gravity="left|center_vertical" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     /> 

我的活动:

import android.support.v4.app.FragmentActivity; 
import android.view.View; 
import android.widget.TextView; 

public class MyActivity extends FragmentActivity{ 

    private View myTestView;  
    private TextView actionBarTitle; 

    @Override 
    protected void onCreate(Bundle arg0) { 
     super.onCreate(arg0); 

     myTestView = getLayoutInflater().inflate(R.layout.my_test, null); 
     myTitle = (TextView) findViewById(R.id.my_title); 

     //NullPointerException here !! 
     myTitle.setText(getString(R.string.hello)); 
    } 
} 

(我相信这个问题是不是关于res/strings.xml,因为“他LLO”字符串资源已经在这是很好的其他地方使用。)

为什么NullPointerException异常当我设置TextView内容?

完整的错误跟踪:

Caused by: java.lang.NullPointerException 
E/AndroidRuntime(17283): at com.test.MyActivity.onCreate(MyActivity.java:21) 
E/AndroidRuntime(17283): at com.eficode.card.CardActivity.onCreate(CarActivity.java:29) 
E/AndroidRuntime(17283): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
E/AndroidRuntime(17283): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2669) 
E/AndroidRuntime(17283): ... 11 more 
+0

你没有设置任何东西在屏幕上显示? – waqaslam 2012-02-13 15:15:32

回答

4

创建的TextView ID如下myTitle =(TextView的)myTestView .findViewById(R.id.my_title);

+0

嗨!谢谢,现在好了。但你能解释为什么我不能直接在Activity中使用findViewById吗? – 2012-02-13 15:23:16

+0

很高兴与你合作,她没有。 – 2013-10-04 14:08:56

0

你应该正确地写你的onCreate,因为你没有设置任何东西在屏幕上显示:

@Override 
    protected void onCreate(Bundle arg0) { 
     super.onCreate(arg0); 
     setContentView(R.layout.my_test); 

     myTitle = (TextView) findViewById(R.id.my_title); 

     myTitle.setText(getString(R.string.hello)); 
    } 
+0

不,我不同意你的看法,因为Activity不必总是设置内容。我使用@ Venkata Krishna的答案后,我的代码正常工作。 – 2012-02-13 15:25:10

+0

是的,你可能会保持你的活动空白,但如果你不希望它显示在任何地方,甚至在你的活动TextView的点什么?这正是android-developer所说的:“一项活动是用户可以做的一件单独的,专注的事情。几乎所有的活动都与用户交互,所以Activity类负责为你创建一个窗口,在这个窗口中你可以使用setContentView(View)来放置你的UI。' – waqaslam 2012-02-13 15:28:29

0

,你只能得到ID的直接意见的布局,在声明的setContentView(R.layout .your_layout_id);但是当你膨胀一些布局时,你必须在膨胀视图中获得视图的id,如下view_id.find ....();

+0

谢谢你,好点。 – 2012-02-13 16:26:19