跨活动传递textview值

时间:2017-07-20 19:48:08

标签: java android

我正在尝试将值传递给文本视图到另一个活动,但只有在单击活动中的按钮时才会这样。

以下是我尝试设置文字的活动......

public static Button yes;
public static final String TEST_KEY = "test";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_question19);

    yes = (Button) findViewById(R.id.finalYes);
    yes.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v){
            Intent myIntent = new Intent(v.getContext(), Question13Activity.class);
            startActivity(myIntent);

            Intent i = new Intent(Question12Activity.this, HighRiskActivity.class);
            i.putExtra(TEST_KEY, "SOME STRINGSSS");

        }
    });

以下是HighRiskActivity,它是更新textview值的目的地......

TextView t;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.high_risk);
        t = (TextView) findViewById(R.id.abusedOrNah);

        Bundle extras = getIntent().getExtras();
        if(extras != null)
        {
            String value = extras.getString(TEST_KEY);
            t.setText(value);
        }

我的问题是没有文字正在打印所需的活动,我是否传递了错误的数据?任何帮助都会很棒,这是我正在创建的应用程序的最后一步:D

更新

单击按钮时,我不希望将Question12Activity定向到HighRiskActivity。我希望它转到下一个活动,但仍然能够在单击按钮后将文本传递到HighRiskActivity。很抱歉这有点混乱,希望更有意义:)

4 个答案:

答案 0 :(得分:1)

尝试以这种方式传递数据:

Intent i = new Intent(this, SecondActivity.class);

Bundle bundle = new Bundle();

//Add your data to bundle
bundle.putString(“test”, "Data you want to pass");

//Add the bundle to the intent
i.putExtras(bundle);

startActivity(i);

现在,您在SecondActivity课程中检索数据如下:

Bundle bundle = getIntent().getExtras();

//get the data…
String stuff = bundle.getString(“test”); 

答案 1 :(得分:1)

通过下面的陈述开始第一项活动,我不知道你想要达到的目的

Intent myIntent = new Intent(v.getContext(), Question13Activity.class); startActivity(myIntent);

但是,如果您要启动的活动是HighRiskActivity,那么以下内容应该可以解决您的问题:

  1. 删除与上述问题13活动相关的陈述。
  2. 并添加调用以启动实际的HighRiskActivity,如下所示:
  3. Intent i = new Intent(Question12Activity.this, HighRiskActivity.class); i.putExtra(TEST_KEY, "SOME STRINGSSS"); startActivity(i); // 此行对于启动新活动很重要。

    所以,我想你的主要问题是你没有通过startActivity(i);电话启动活动。

答案 2 :(得分:0)

在活动A中,您使用的是不公开的内部意图包以及意图的私有。在活动B中,您要求的目的是寻找您自己提供的捆绑包。

在您的活动A中尝试这样的事情

    Intent intent = new Intent(context, YourActivity.class);
    Bundle bundle = new Bundle();
    bundle.putParcelable("EXTRA1", "string data");
    intent.putExtra(TEST_KEY, bundle);
    startIntent(intent);

这是一篇关于这个主题的好文章(见答案)Advantages of using Bundle instead of direct Intent putExtra() in Android

答案 3 :(得分:0)

您不需要定义两个意图来连接两个活动。将以下内容放在onClick方法

Intent i = new Intent(Question12Activity.this, HighRiskActivity.class);
i.putExtra(TEST_KEY, "SOME STRINGSSS");
startActivity(i);