getIntent返回null

时间:2016-07-03 15:16:04

标签: java android

在android中我尝试使用getIntent();在android中的方法,它返回null,这导致应用程序崩溃。这是我的代码:

public class MainActivity extends AppCompatActivity {

    public final static String EXTRA_MESSAGE = "com.mycompany.myfirstapp.MESSAGE";

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

    public void sendMessage(View view) {
        Intent intent = new Intent(this, DisplayMessageActivity.class);
        EditText textbox = (EditText) findViewById(R.id.edit_message);
        String message = textbox.getText().toString();
        intent.putExtra(EXTRA_MESSAGE, message.toString());
        startActivity(intent);
    }
}

第一个活动叫第二个:

public class DisplayMessageActivity extends AppCompatActivity {

    Intent intent = getIntent();


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

        String message = "";

        if (intent == null) {
            Log.d("Intent", "Intent is null :(");
        }

        try {
            message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
        } catch (Exception e) {
            Log.d("Message", "Message is null");
        }


        TextView textView = new TextView(this);
        textView.setText(message);
        textView.setTextSize(40);

        RelativeLayout layout = (RelativeLayout) findViewById(R.id.content);
        layout.addView(textView);
    }
}   

我不明白为什么它会返回null,因为我自己使用的意思是......它不是null。

编辑:我还尝试使用除了常量之外的其他东西,比如“消息”,而不是EXTRA_MESSAGE,它会导致相同的结果。

2 个答案:

答案 0 :(得分:1)

有两个原因是null。 1)如果你没有在andorid中的manifest.xml文件中声明活动。 2)你必须在oncreate()方法中使用getIntent(),该东西的代码在这里: -

public class DisplayMessageActivity extends AppCompatActivity {

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

        Intent intent = getIntent();


        String message = "";

        if (intent == null) {
            Log.d("Intent", "Intent is null :(");
        }

        try {
            message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
        } catch (Exception e) {
            Log.d("Message", "Message is null");
        }


        TextView textView = new TextView(this);
        textView.setText(message);
        textView.setTextSize(40);

        RelativeLayout layout = (RelativeLayout) findViewById(R.id.content);
        layout.addView(textView);
    }
}   

答案 1 :(得分:0)

必须在 setContentView()方法之后调用

getIntent()方法

public class DisplayMessageActivity extends AppCompatActivity {

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

    Intent intent = getIntent();
    String message = "";

    if (intent == null) {
        Log.d("Intent", "Intent is null :(");
    }

    try {
        message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
    } catch (Exception e) {
        Log.d("Message", "Message is null");
    }


    TextView textView = new TextView(this);
    textView.setText(message);
    textView.setTextSize(40);

    RelativeLayout layout = (RelativeLayout) findViewById(R.id.content);
    layout.addView(textView);
}

}