有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java getIntent返回null

在安卓中,当我尝试使用getIntent()时;方法,它返回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,因为我自己使用一个意图调用它。。。不为空

编辑:我还尝试使用一些非常量的键,比如“message”,而不是额外的消息,这会导致相同的结果


共 (2) 个答案

  1. # 1 楼答案

    空值有两个原因。 1) 如果您没有在清单中声明活动。xml文件在ANDROID中。 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);
        }
    }   
    
  2. # 2 楼答案

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

    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);
    }
    

    }