为什么我在调用setContentView()后无法访问我的视图?

时间:2014-03-29 12:12:33

标签: android

以下是代码:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Intent intent = getIntent();
    String message = "Email: \n" +intent.getStringExtra(MainActivity.ACCOUNT_EMAIL);
    setContentView(R.layout.activity_display_message);

    TextView textView = (TextView) findViewById(R.id.display_info);
    //textView.setText(message);

    if (savedInstanceState == null) {
        getSupportFragmentManager().beginTransaction()
                .add(R.id.container, new PlaceholderFragment()).commit();
    }
}
public static class PlaceholderFragment extends Fragment {
        public PlaceholderFragment() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_display_message,
                    container, false);
            return rootView;
        }
    }

XML中的ID名称肯定是正确的,但无论出于何种原因,此注释行始终返回null。当我对该行进行注释时,片段将打开,并显示文本视图(我有一些占位符文本)。我无法从代码中访问此内容。

1 个答案:

答案 0 :(得分:1)

您说片段显示的是TextView,但您尝试从Activity(以及Activity的布局)中引用TextView。

在没有看到布局的情况下,我猜测TextView位于fragment_display_message.xml(而不是activity_display_message.xml)。

您似乎希望将访问TextView的逻辑移动到片段onCreateView()中。请记住,您可能希望使用Fragment参数来设置消息,因为直接从Activity中获取消息将不再有效。