当前位置: 首页 > 知识库问答 >
问题:

使用条件在活动之间传递数据

陆寒
2023-03-14

我成功地尝试在三个活动之间传递数据。那就是:

(数据3)活动1(数据1)-

现在的问题是:

  1. 我希望使用条件在这些活动之间传递数据。这是在Activity2中,在将数据发送到Activity3之前,我想检查一下
WORD = "word building"
DROP = "word built"

if  WORD FROM EDITTEXT == WORD
      pass data to Activity1 AND
      goto Activity1
else 
      if WORD FROM EDITTEXT == DROP
          pass data to Activity3 AND
          goto Activity3

这是名为PickCard的Activity1的代码。Java语言

public class PickCard extends Activity {

    String card = "Card Picked";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        displayIntentData();

        findViewById(R.id.sendButton).setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                Intent intent = new Intent(PickCard.this, BuildWord.class);
                intent.putExtra("key", card);
                startActivity(intent);
            }
        });
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);//must store the new intent unless getIntent() will return the old one
        displayIntentData();
    }

    private void displayIntentData() {
        Intent intent = getIntent();
        TextView tv = (TextView) findViewById(R.id.intentData);
        Bundle extras = intent.getExtras();

        if (extras != null) {
            tv.setText("Data received: " + extras.getString("key"));
        } else {
            tv.setText("No extradata received");
        }
    }
}

下面是Activity2 BuildWord的代码。Java语言

public class BuildWord extends Activity {

    String word = "Word Building";
    String finished = "Word Built";
    EditText simulate = (EditText) findViewById(R.id.dataToSend);
    String getdata = simulate.getText().toString();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.buildword);

        displayIntentData();

        if (getdata == word) {
            findViewById(R.id.sendButton1).setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    Intent intent = new Intent(BuildWord.this, MainActivity.class);
                    intent.putExtra("key", getdata);
                    startActivity(intent);

                }
            });
        } else {
            findViewById(R.id.sendButton1).setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    Intent intent = new Intent(BuildWord.this, DropCard.class);
                    intent.putExtra("key", finished);
                    startActivity(intent);
                }
            });
        }
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);
        displayIntentData();
    }

    private void displayIntentData() {
        Intent intent = getIntent();
        TextView tv = (TextView) findViewById(R.id.intentData1);
        Bundle extras = intent.getExtras();

        if (extras != null) {
            tv.setText("Data received: " + extras.getString("key"));
        } else {
            tv.setText("No extradata received");
        }
    }
}

这是名为DropCard的Activity3的代码。Java语言

public class DropCard extends Activity {

    String drop = "Card Dropped";
    String declared = "User Declared";
    boolean won = false;
    /*Intent intent = getIntent();
     TextView tv = (TextView)findViewById(R.id.intentData2);
     Bundle extras=intent.getExtras();*/
    String get = "word building";//extras.getString("key");

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dropcard);

        displayIntentData();

        if (get == "word built") {
            findViewById(R.id.sendButton2).setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    Intent intent = new Intent(DropCard.this, Declare.class);
                    intent.putExtra("key", declared);
                    startActivity(intent);
                }
            });
        } else {
            findViewById(R.id.sendButton2).setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    Intent intent = new Intent(DropCard.this, MainActivity.class);
                    intent.putExtra("key", drop);
                    startActivity(intent);
                    //notice we dont call finish() here
                }
            });
        }
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);//must store the new intent unless getIntent() will return the old one
        displayIntentData();
    }

    private void displayIntentData() {
        Intent intent = getIntent();
        TextView tv = (TextView) findViewById(R.id.intentData2);
        Bundle extras = intent.getExtras();

        if (extras != null) {
            tv.setText("Data received: " + extras.getString("key"));
        } else {
            tv.setText("No extradata received");
        }
    }
}

共有3个答案

孔鸿宝
2023-03-14
匿名用户

这是一个简单的方法,您必须比较默认方法equalsIgnoreCase()。

    String name = edit_text.getText().toString();

    if(name.equalsIgnoreCase("WellCome"))
    {

        //CALL YOUR ACTIVITY ONE

    }
    else
    {

        //CALL YOUR ACTIVITY THREE

    }

佟阳云
2023-03-14
  if (getData.getText().toString().equalsIgnoreCase("String name"))//change this line in your code for checking
    {
        findViewById(R.id.sendButton1).setOnClickListener(new OnClickListener() 
        {   
            public void onClick(View v) 
            {
                Intent intent = new Intent(BuildWord.this,MainActivity.class);
                intent.putExtra("key", getdata);
                startActivity(intent);

            }
        });
    }
    else
    {
        findViewById(R.id.sendButton1).setOnClickListener(new OnClickListener() 
        {   
            public void onClick(View v) 
            {
                Intent intent = new Intent(BuildWord.this,DropCard.class);
                intent.putExtra("key", finished);
                startActivity(intent);                  
            }
        });
    }
寿意远
2023-03-14

使用

if (getdata.equals(word)){

}

而不是

if (getdata == word){

}

用于比较字符串。与当前代码一样,将所有的==替换为等于

 类似资料:
  • 我正在尝试在活动之间传递数据 我使用intents在常规活动之间传递数据 请考虑以下代码:: 假设我将来自名为的其他活动的数据作为意图发送到 现在,如何接收中的数据,这些数据是从获得的,然后再将其传递到中 象形表示为:: {EDIT}--如果根据答案可以这样做--不明确,因为AndroidTabRestaurantDescearchListView是一个选项卡活动

  • 我正在开发一个由多个活动组成的Android应用程序,我必须在它们之间传递ab对象,但我不能通过使用意图传递它,因为对象的类没有实现可序列化,我怎么做?我无法修改我的类的源代码。谢谢:)

  • 我有两项活动。两者都已实现surfaceview。在第一个活动中,我有一个名为score1的变量,我想将score1中的值传递给第二个活动。 每次我运行应用程序时,它在完成第一个活动后崩溃,并尝试加载第二个活动。在我编写代码以获取第二个活动中的额外意图之前,一切都很好。 我的第一个活动有这样的意图: 在我的第二个活动中,以下代码试图获取score1变量的值: 我不明白为什么每次activity o

  • 我试图在我的android应用程序中的两个活动之间传递数据,我想使用HashMap(我不想使用Intent)。以下是我的代码: DataHolder.java 在第一个活动中设置值 在其他活动中获得价值 当我用它在activity1到activity2之间传递数据时,它会起作用,但在那之后,当在activity2到activity3之间传递数据时,返回null,因此强制转换为(整数)会导致错误。在

  • 我有两个活动,它们应该使用意图相互传递数据。我不确定在哪里放置一些看跌期权和看跌期权。 对于Activity1(MainActivity),我有一个按钮,按下它会创建一个意向,然后将其放入Activity2,然后使用startActivity(意向)启动它。 然后在Activity2中,我使用getIntent在onCreate()函数中获取该信息。 现在我想做的是在Activity2中有一个按钮

  • 背景: 有两项活动 1x(主活动),1x(子活动-具有列表视图的活动) 主活动扩展了碎片活动,信息将在碎片中使用 单击主活动的菜单项时,子活动将打开 为ListView使用HashMap 我的目标: 单击项的HashMap值应发送回主活动,子活动(带有ListView)应关闭 问题: 我认为我犯了一个巨大的错误,但我无法解决它。 从onOptionsItemSelected和onActivityR