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()
Intentbintent
- 最后在应用程序上共享
意图,以便通过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文件吗?是的,好吧,这对你来说比较容易我很抱歉迟到了,但我一直在搜索它,以便向你解释。非常感谢你回答我的问题。对不起,我在这件事上不耐烦了。因为我必须完成最后的任务。我一定要把你的名字写在我的最终报告中。非常感谢您(欢迎,没关系,很高兴帮助您:)