我试图传递用户从一个活动进入另一个活动的字符串值,并将这些值显示在第二个活动的表中,但是当我们移动到第二个活动时,表格显示但是它是空的,我是想知道是否有人可以帮助我找到我的问题在我的代码中的位置,
<h1>Activity 1 where user enters information</h1>
`package com.example.scheduler;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class Save extends Activity implements OnClickListener
{
Button sbm,bk;
EditText fname,lname,course,time,inst,title;
private static final int table = 1810;
private String newfname,newlname,newcourse,newtitle,newtime,newinst;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.newb);
sbm = (Button) findViewById(R.id.button1);
sbm.setOnClickListener(this);
bk = (Button) findViewById(R.id.button2);
bk.setOnClickListener(this);
fname = (EditText) findViewById(R.id.editText1);
lname = (EditText) findViewById(R.id.editText2);
course = (EditText) findViewById(R.id.editText3);
time = (EditText) findViewById(R.id.editText4);
inst = (EditText) findViewById(R.id.editText5);
title = (EditText) findViewById(R.id.editText6);
}
public void onClick(View v)
{
v.getId();
try
{
Intent launch = new Intent(Save.this,table.class);
Bundle myData = new Bundle();
if(sbm.isPressed())
{
if(fname.getText().toString().length()==0||lname.getText().toString().length()==0||course.getText().toString().length()==0||time.getText().toString().length()==0
||inst.getText().toString().length()==0||title.getText().toString().length()==0)
{
Toast.makeText(this, "Please fill in all fields!", Toast.LENGTH_LONG).show();
}else
{
newfname = fname.getText().toString();
newlname = lname.getText().toString();
newcourse = course.getText().toString();
newtime = time.getText().toString();
newinst = inst.getText().toString();
newtitle = title.getText().toString();
myData.putString("fname", newfname);
myData.putString("lname", newlname);
myData.putString("course", newcourse);
myData.putString("time", newtime);
myData.putString("instructor", newinst);
myData.putString("title", newtitle);
startActivityForResult(launch,table);
}
}
}catch(Exception e)
{
Toast.makeText(getBaseContext(), e.getMessage(),
Toast.LENGTH_LONG).show();
}
if(bk.isPressed())
{
finish();
}
}
}
`
<h1>Activity 2 where information is displayed</h1>
package com.example.scheduler;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
public class table extends Activity
{
TextView titletv,fnametv,lnametv,coursetv,timetv,insttv;
public void onCreate(Bundle savedInstance)
{
super.onCreate(savedInstance);
setContentView(R.layout.schedule_table);
titletv = (TextView) findViewById(R.id.titleTextView);
fnametv = (TextView) findViewById(R.id.fnameTextView);
lnametv = (TextView) findViewById(R.id.lnameTextView);
coursetv = (TextView) findViewById(R.id.courseTextView);
timetv = (TextView) findViewById(R.id.timeTextView);
insttv = (TextView) findViewById(R.id.instructorTextView);
try
{
Intent myLocalIntent = getIntent();
Bundle myBundle = myLocalIntent.getExtras();
String strfname = myBundle.getString("fname");
String strlname = myBundle.getString("lname");
String strcourse = myBundle.getString("course");
String strtime = myBundle.getString("time");
String strinst = myBundle.getString("instructor");
String strtitle = myBundle.getString("title");
titletv.setText(strtitle);
fnametv.setText(strfname);
lnametv.setText(strlname);
coursetv.setText(strcourse);
timetv.setText(strtime);
insttv.setText(strinst);
myLocalIntent.putExtras(myBundle);
setResult(Activity.RESULT_OK, myLocalIntent);
}catch(Exception e)
{
Toast.makeText(getBaseContext(), e.getMessage(),
Toast.LENGTH_LONG).show();
}
finally
{
}
}
}`
答案 0 :(得分:2)
您必须将bundle
放在Intent
launch.putExtras(myData)
答案 1 :(得分:1)
你声明:
Bundle myData = new Bundle();
但是你正在用桌子开始活动:
startActivityForResult(launch,table);
将其更改为:
launch.putExtras(myData)
答案 2 :(得分:0)
你可以像这样
在主活动中声明字符串static String yourString="";
将值分配给字符串
yourString="what_Ever_Value";
并从以下其他活动中调用它:
String yourString=packgeName.ClassName.yourString;
答案 3 :(得分:0)
如果这仍处于打开状态并且正在查看,那么您应该使用共享首选项。 http://developer.android.com/guide/topics/data/data-storage.html#pref
比意图更简单,更高效,使用共享首选项,您可以将数据传递给片段以及活动,反之亦然