Java 使用getIntent从另一个类获取时,字符串为null

Java 使用getIntent从另一个类获取时,字符串为null,java,android,android-intent,android-activity,Java,Android,Android Intent,Android Activity,现在我有一个带有编辑文本行的活动屏幕,我从中获取用户输入。当我点击按钮上的“创建事件”按钮时,事件文本应该填充到我在另一个活动中的新闻提要中 以下是CreateEvent活动/屏幕代码部分: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.create_eve

现在我有一个带有编辑文本行的活动屏幕,我从中获取用户输入。当我点击按钮上的“创建事件”按钮时,事件文本应该填充到我在另一个活动中的新闻提要中

以下是CreateEvent活动/屏幕代码部分:

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

        CreateEvent_Button = (Button)findViewById(R.id.create_event_button);

        WhatEvent_Text   = (EditText)findViewById(R.id.what_event);
        WhenEventTime_Text   = (EditText)findViewById(R.id.time_event);
        WhenEventDate_Text   = (EditText)findViewById(R.id.date_event);
        WhereEvent_Text   = (EditText)findViewById(R.id.where_event);


        CreateEvent_Button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                 WhatEvent_String = WhatEvent_Text.getText().toString();
                 WhenEventTime_String = WhenEventTime_Text.getText().toString();
                 WhenEventDate_String = WhenEventDate_Text.getText().toString();
                 WhereEvent_String = WhereEvent_Text.getText().toString();



                Log.e("What: ", WhatEvent_String);
                Log.e("When_Time: ", WhenEventTime_String);
                Log.e("When_Date: ", WhenEventDate_String);
                Log.e("Where_Event: ", WhereEvent_String);


                Intent intent = new Intent(CreateEvent.this,MainActivity.class);
                intent.putExtra("WhatEvent_String", WhatEvent_String);
                intent.putExtra("WhenEventTime_String", WhenEventTime_String);
                intent.putExtra("WhenEventDate_String", WhenEventDate_String);
                intent.putExtra("WhereEvent_String", WhereEvent_String);

                startActivity(intent);

                MainActivity  main= new MainActivity();

                //make sure you call method from other class correctly


                main.addEvent();



            }
        });
    }
当按下创建事件按钮时,它会在MainActivity屏幕/活动中创建一个事件;但是,用户输入为空。我不确定为什么会发生这种情况,因为我相信我正确地使用了intent方法

这是我的主要活动屏幕

下面是MainActivity中onCreate方法中的getIntent方法

 Intent intent = getIntent();
    if (null != intent) {
        test = intent.getStringExtra("WhatEvent_String");
    }
但是,当我调用addEvent方法时:

protected  void addEvent() {
        // Instantiate a new "row" view.
       // final ViewGroup newView = (ViewGroup) LayoutInflater.from(this).inflate(R.layout.list_row, mContainerView, false);

        // Set the text in the new row to a random country.


        // Because mContainerView has android:animateLayoutChanges set to true,
        // adding this view is automatically animated.
        //mContainerView.addView(newView, 0);




        HitupEvent hitupEvent = new HitupEvent();



        hitupEvent.setTitle("Rohit "+ "wants to "+test  );

        hitupEvent.setThumbnailUrl(roro_photo);


        //hitupEvent.setRating(30);
        //hitupEvent.setYear(1995);

        //hitupEvent.setThumbnailUrl(null);

        ArrayList<String> singleAddress = new ArrayList<String>();

        singleAddress.add("17 Fake Street");
        singleAddress.add("Phoney town");
        singleAddress.add("Makebelieveland");


        hitupEvent.setGenre(singleAddress);



        hitupEventList.add(hitupEvent);

        adapter.notifyDataSetChanged();

    }
protectedvoid addEvent(){
//实例化一个新的“行”视图。
//最终视图组newView=(视图组)布局更平坦。从(this)。充气(R.layout.list_行,mContainerView,false);
//将新行中的文本设置为随机国家/地区。
//因为McContainerView将android:animateLayoutChanges设置为true,
//添加此视图将自动设置动画。
//mContainerView.addView(newView,0);
HitupEvent HitupEvent=新的HitupEvent();
setTitle(“Rohit”+“想要”+测试);
hitupEvent.setThumbnailUrl(roro_照片);
//hitupEvent.setRating(30);
//hitupEvent.setYear(1995年);
//hitupEvent.setThumbnailUrl(空);
ArrayList singleAddress=新的ArrayList();
单一地址。添加(“17号假街”);
singleAddress.add(“假镇”);
singleAddress.add(“Makebelieveland”);
hitupEvent.setgreen(单地址);
hitupEventList.add(hitupEvent);
adapter.notifyDataSetChanged();
}
事件输入文本为空。我不知道为什么会这样

我试图解决它,但没有运气

有没有办法解决这个问题


谢谢

不要使用
Intent
获取您通过
putExtra()输入的
String

而是使用
捆绑包
,一个示例代码段

    Bundle extra = getIntent().getExtras();
      if(extra!=null){
        test= extra.getString("WhatEvent_String");
    }
编辑


我刚才注意到您从错误的位置调用了方法
main.addEvent()
!在
onCreate()
方法的
main活动中调用它

拆下这些线

           MainActivity  main= new MainActivity();

            //make sure you call method from other class correctly


            main.addEvent();
在您的
main活动中

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

    Bundle extra = getIntent().getExtras();
         if(extra!=null){
            test= extra.getString("WhatEvent_String");
      }
    addEvent(); // call your addEvent() method here
}

如果(null!=intent)有时会产生问题,首先尝试删除条件并在日志中打印测试,如果(intent!=null)删除此代码,则尝试更改条件,MainActivity main=new MainActivity()//确保从其他类正确调用方法main.addEvent();因为它是先调用的,您的数据看起来是空的,所以您已经在启动一个活动并使用getIntent();在MainActivity的onCreate中,为什么CreateEvent中会出现此代码?我很难理解您所说的Bhavik。你能解释一下应该如何调用addEvent()以及应该在哪里调用getIntent吗?你能在这里发布你的整个MainActivity代码吗?所以我可以为您创建一个答案。我刚才注意到您正在调用方法
main.addEvent()从错误的地方!在
onCreate()
方法的
main活动中调用它
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.yourLayout);

    Bundle extra = getIntent().getExtras();
         if(extra!=null){
            test= extra.getString("WhatEvent_String");
      }
    addEvent(); // call your addEvent() method here
}