Android 输入数据后返回数据列表

Android 输入数据后返回数据列表,android,android-intent,android-activity,Android,Android Intent,Android Activity,我有三项活动,主要活动,其他活动,第三项活动 public class OtherActivity extends Activity { EditText Name, Age, MPersonal, MBTI, Birthday, SNotes; Button second button, third button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedI

我有三项活动,主要活动,其他活动,第三项活动

public class OtherActivity extends Activity {

EditText Name, Age, MPersonal, MBTI, Birthday, SNotes;
Button second button, third button;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.other_activity);
    Intent myIntent = getIntent();
    secondbutton = (Button)findViewById(R.id.secondbutton);
    thirdbutton = (Button)findViewById(R.id.button3);
    Name = (EditText) findViewById(R.id.editText);
    Age = (EditText) findViewById(R.id.editText2);
    MPersonal = (EditText) findViewById(R.id.editText3);
    MBTI = (EditText) findViewById(R.id.editText4);
    Birthday = (EditText) findViewById(R.id.editText5);
    SNotes = (EditText) findViewById(R.id.editText6);

}
public void onClick2(View view) {
    Intent backIntent = new Intent(OtherActivity.this, MainActivity.class);
    OtherActivity.this.startActivity(backIntent);
}
public void onClick3(View view) {
    Intent bintent = new Intent(this, ThirdActivity.class);
    Bundle bbundle = new Bundle();
    bbundle.putString("name", Name.getText().toString());
    bbundle.putString("age", Age.getText().toString());
    bbundle.putString("mper", MPersonal.getText().toString());
    bbundle.putString("mbti", MBTI.getText().toString());
    bbundle.putString("birthday", Birthday.getText().toString());
    bbundle.putString("special", SNotes.getText().toString());
    bintent.putExtras(bbundle);
    startActivity(bintent);

}
}
MainActivity作为主菜单,通过按钮指向其他活动:

public void onClick(View v) {
        Intent myIntent = new Intent(MainActivity.this, OtherActivity.class);
        MainActivity.this.startActivity(myIntent);
    }
然后在OtherActivity中包含需要输入下一个活动(第三个活动)的数据表单列表

public class OtherActivity extends Activity {

EditText Name, Age, MPersonal, MBTI, Birthday, SNotes;
Button second button, third button;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.other_activity);
    Intent myIntent = getIntent();
    secondbutton = (Button)findViewById(R.id.secondbutton);
    thirdbutton = (Button)findViewById(R.id.button3);
    Name = (EditText) findViewById(R.id.editText);
    Age = (EditText) findViewById(R.id.editText2);
    MPersonal = (EditText) findViewById(R.id.editText3);
    MBTI = (EditText) findViewById(R.id.editText4);
    Birthday = (EditText) findViewById(R.id.editText5);
    SNotes = (EditText) findViewById(R.id.editText6);

}
public void onClick2(View view) {
    Intent backIntent = new Intent(OtherActivity.this, MainActivity.class);
    OtherActivity.this.startActivity(backIntent);
}
public void onClick3(View view) {
    Intent bintent = new Intent(this, ThirdActivity.class);
    Bundle bbundle = new Bundle();
    bbundle.putString("name", Name.getText().toString());
    bbundle.putString("age", Age.getText().toString());
    bbundle.putString("mper", MPersonal.getText().toString());
    bbundle.putString("mbti", MBTI.getText().toString());
    bbundle.putString("birthday", Birthday.getText().toString());
    bbundle.putString("special", SNotes.getText().toString());
    bintent.putExtras(bbundle);
    startActivity(bintent);

}
}
它工作得很好,它直接将意图发送到第三个活动,即:

public class ThirdActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.data_activity);
    TextView nameView = (TextView) findViewById(R.id.nametext);
    nameView.setText(getIntent().getExtras().getString("name"));
    TextView ageView = (TextView) findViewById(R.id.agetext);
    ageView.setText(getIntent().getExtras().getString("age"));
    TextView mperView = (TextView) findViewById(R.id.mpersonalitytext);
    mperView.setText(getIntent().getExtras().getString("mper"));
    TextView mbtiView = (TextView) findViewById(R.id.mbtitext);
    mbtiView.setText(getIntent().getExtras().getString("mbti"));
    TextView birthdayView = (TextView) findViewById(R.id.birthdaytext);
    birthdayView.setText(getIntent().getExtras().getString("birthday"));
    TextView specialView = (TextView) findViewById(R.id.specialtext);
    specialView.setText(getIntent().getExtras().getString("special"));
}
ThirdActivity内部还包含onClick函数和重定向到主菜单:

    public void Clicky (View vclicky) {
    Intent intentclick = new Intent(ThirdActivity.this, MainActivity.class);
    ThirdActivity.this.startActivity(intentclick);
}
它工作得很好。但当我试图返回到第三个活动时,它列出了输入的数据。尝试单击按钮时出错:

public void onClicky(View vclick) {
    Intent kuriki = new Intent(MainActivity.this, ThirdActivity.class);
    MainActivity.this.startActivity(kuriki);
}
错误消息显示:

E/AndroidRuntime:致命异常:主 进程:com.example.user.myapplication,PID:3739 java.lang.RuntimeException:无法启动activity ComponentInfo{com.example.user.myapplication/com.example.user.myapplication.ThirdActivity}:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.String android.os.BaseBundle.getString(java.lang.String)” 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)上 位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) 位于android.app.ActivityThread.-wrap12(ActivityThread.java)

底线是,当我尝试在OtherActivity中输入数据时,输入的数据以TextView的形式保存在ThirdActivity中。返回按钮将返回主菜单,主菜单为MainActivity。然后,当我试图通过点击按钮查看数据,直接到第三个活动。发生错误


你能帮我解释一下为什么我不能返回到输入的数据,同时我认为我不理解错误信息。提前感谢

很抱歉迟到了,但我已经搜索并尝试了很多次向您解释,并知道错误在哪里,最开始的错误是您在帖子中阅读/提供的日志,这些行对您没有用处,也无法帮助您了解这一行

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.os.Bundle.getString(java.lang.String)' on a null object reference
                                                                                                      at com.blogspot.dictionary.coding.android.tempdeletemenow.ThirdActivity.onCreate(ThirdActivity.java:32)
它描述了错误,并表示代码中的第X行(我是32行)中有错误 那是

nameView.setText(getIntent().getExtras().getString("name"));
    public void onClicky(View vclick) {
    Intent kuriki = new Intent(MainActivity.this, ThirdActivity.class);
    MainActivity.this.startActivity(kuriki);
}
首先
getIntent().getExtras().getString(“name”)
意味着您从启动此活动的Intent获取已保存的数据(Extras),该活动是

nameView.setText(getIntent().getExtras().getString("name"));
    public void onClicky(View vclick) {
    Intent kuriki = new Intent(MainActivity.this, ThirdActivity.class);
    MainActivity.this.startActivity(kuriki);
}
(在直接启动ViewData的情况下)没有额外内容(保存的数据(姓名、年龄…) ,So首先输入数据,然后查看的意图将起作用,而查看否(空)数据时,意图将崩溃

解决方案是:-

1。在ThirdadActivit中:

public class MainActivity extends Activity {

static Intent bintent;

@Override
protected void onCreate(Bundle savedInstanceState) {
  • 添加检查意图是否有数据(附加)的If语句
  • 还检查其自身的意图是否不为空
  • getIntent()
    替换为
    bintent
    Intent
  • 最后在应用程序上共享
    bintent
    意图,以便通过
    static
像这样

import static com.blogspot.dictionary.coding.android.tempdeletemenow.MainActivity.bintent;


public class ThirdActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.data_activity);

    if (bintent != null) {
        if (bintent.hasExtra("name")) {
            TextView nameView = (TextView) findViewById(R.id.nametext);
            TextView ageView = (TextView) findViewById(R.id.agetext);
            TextView mperView = (TextView) findViewById(R.id.mpersonalitytext);
            TextView mbtiView = (TextView) findViewById(R.id.mbtitext);
            TextView birthdayView = (TextView) findViewById(R.id.birthdaytext);
            TextView specialView = (TextView) findViewById(R.id.specialtext);

            nameView.setText(bintent.getExtras().getString("name"));
            ageView.setText(bintent.getExtras().getString("age"));
            mperView.setText(bintent.getExtras().getString("mper"));
            mbtiView.setText(bintent.getExtras().getString("mbti"));
            birthdayView.setText(bintent.getExtras().getString("birthday"));
            specialView.setText(bintent.getExtras().getString("special"));
        }
    }
}
2。在主活动中

public class MainActivity extends Activity {

static Intent bintent;

@Override
protected void onCreate(Bundle savedInstanceState) {
3。最后,在其他活动中

import static com.blogspot.dictionary.coding.android.tempdeletemenow.MainActivity.bintent;

bintent=newintent之前删除
Intent
(this,ThirdActivity.class)

我无法理解错误,或者我认为它可能遗漏了主线,那么,你能给我一个应用程序的源代码吗?我可以在我的AndroidStudio上运行它来尝试解决它?我如何给应用程序的源代码?我应该给xml和java文件吗?是的,好吧,这对你来说比较容易我很抱歉迟到了,但我一直在搜索它,以便向你解释。非常感谢你回答我的问题。对不起,我在这件事上不耐烦了。因为我必须完成最后的任务。我一定要把你的名字写在我的最终报告中。非常感谢您(欢迎,没关系,很高兴帮助您:)