setContentView导致崩溃

时间:2014-04-04 14:09:28

标签: android

我正在尝试Android网站上的第一个教程 here

目标是输入文本并将其发送到下一页以显示它。

然而,我总是得到“不幸的是我的第一个应用程序停止了”。

我注意到,当我评论setContentView(textView);时,它可以正常工作。

这是我的代码:( LogCat由于某种原因停止显示问题所以我无法提供日志)

package com.example.myfirstapp;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class DisplayMessageActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {


        // Get the message from the intent
        Intent intent = getIntent();
        String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

        // Create the text view
        TextView textView = new TextView(this);
        textView.setTextSize(40);
        textView.setText(message);

        // Set the text view as the activity layout
     // setContentView(textView);

        super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_display_message);

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

    }

4 个答案:

答案 0 :(得分:1)

您无法在setContentView()之前致电super.onCreate()

通常,super.onCreate()应该是被覆盖的onCreate()中的第一行。

请注意,您之后已经setContentView()覆盖了已注释掉的setContentView()内容视图。

答案 1 :(得分:1)

这行应该在你的onCreate(Bundle savedInstanceState)

之后
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_message);

试试。

答案 2 :(得分:1)

请尝试以下代码并发布logcat。

    package com.example.myfirstapp;

        import android.content.Intent;
        import android.os.Bundle;
        import android.support.v4.app.Fragment;
        import android.support.v7.app.ActionBarActivity;
        import android.view.LayoutInflater;
        import android.view.MenuItem;
        import android.view.View;
        import android.view.ViewGroup;
        import android.widget.TextView;

            public class DisplayMessageActivity extends ActionBarActivity {

                @Override
                protected void onCreate(Bundle savedInstanceState) {
                   super.onCreate(savedInstanceState);
                   setContentView(R.layout.activity_display_message);

                    // Get the message from the intent
                    Intent intent = getIntent();
                    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

                    // Create the text view
                    TextView textView = (TextView) findViewById(R.id.textView);
                    textView.setTextSize(40);
                    textView.setText(message);

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

               }
}

我认为还需要在xml中声明TextView。 我希望这将有所帮助。谢谢!

答案 3 :(得分:0)

问题的解决方案是在为DisplayMessageActivity创建新的Android活动时,确保将其Hierarchical parent选为MainActivity