-1

嗨,我试图将用户从一个活动输入的字符串值传递到另一个活动,并将这些值显示在第二个活动的表格中,但是当我们移动到第二个活动时,表格显示但它是空的,我想知道是否有人可以帮助我找到我的代码中的问题所在,

<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
        {

        }
    }
}`
4

4 回答 4

2

你必须把bundle里面Intent

launch.putExtras(myData)
于 2012-11-29T17:19:56.097 回答
1

您声明:

  Bundle myData = new Bundle();

但是您正在使用表格开始活动:

 startActivityForResult(launch,table);

将其更改为:

  launch.putExtras(myData)
于 2012-11-29T17:21:49.733 回答
0

如果这仍然是开放的并且正在被查看,那么您真的应该为此使用共享首选项。http://developer.android.com/guide/topics/data/data-storage.html#pref

比意图更简单、更高效,并且通过共享首选项,您可以将数据传递给片段和活动,反之亦然

于 2013-07-17T13:52:49.000 回答
0

您可以像这样在主要活动中声明字符串

static String yourString="";

将值分配给您的字符串

yourString="what_Ever_Value";

并从其他活动中调用它,如下所示:

String yourString=packgeName.ClassName.yourString;
于 2012-11-29T17:44:22.533 回答