从startActivityFromResult

时间:2017-08-09 06:06:33

标签: java android android-intent

我想做的是:

  1. 当我启动应用程序时,主要活动的界面将是 显示但全局字符串没有存储数据。
  2. 然后当我点击MainActivity中的按钮时,我将转到下一个Activity。
  3. 在第二个活动中,有一个EditText,我可以输入任何我想要的内容。
  4. 然后,如果在editText中输入(假设EditText与执行所需的if语句条件相同),我将单击第二个Activity中的按钮并将意图传递给MainActivity类。
  5. 在MainActivity中,我想获得第二个Activity传递的意图,将它存储在我的String中,当我点击MainActivity中的按钮时,它会显示一条消息,显示一个叫“成功”的祝酒词。
  6. 我的问题出在第5步,当我点击按钮时,它没有显示“成功”;它显示“错误”。假设我输入的内容与if语句中的内容相同。

    我的代码是:

    浮动操作按钮代码:

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
            fab.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent i = new Intent(MainActivity.this, SearchCategory.class);
                    startActivityForResult(i, 0);
                }
            });
    

    注意:这是打开第二个活动的按钮

    在我的第二个活动按钮中,点击代码:

    public void search(View view) {
    
        editText1 = (EditText)findViewById(R.id.start_text);
        type = editText1.getText().toString();
    
    
    
        Intent intent = new Intent();
        Bundle bundle = new Bundle();
        bundle.putString("type", type);
        intent.putExtras(bundle);
        setResult(RESULT_OK, intent);
        finish();
    
    }
    

    按钮点击主要活动

    public void onButtonClick(View view) {
    if (start == "Car") {
                Toast.makeText(this, "Successful", Toast.LENGTH_LONG).show();
    } else {
    Toast.makeText(this, "Error", Toast.LENGTH_LONG).show();
    }
    

    关于ActivityResult代码:

    @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if (resultCode == RESULT_OK) {
                /*EditText et = (EditText)findViewById(R.id.text_category);*/
    
                Bundle category = data.getExtras();
                category_text = category.getString("type");
    
                /*et.setText(start);*/
            }
        }
    

    注意:我尝试在主要活动中添加editText,它会显示我在第二个活动的editText中输入的文字。

3 个答案:

答案 0 :(得分:1)

start是一个String值,因此请将此条件更改为

  

start.equals("车载&#34)

答案 1 :(得分:0)

下面有问题的代码,

if (start == "Car") {
            Toast.makeText(this, "Successful", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "Error", Toast.LENGTH_LONG).show();
}

你应该将你的String与equals(" Car")

进行比较

Plz引用一些基本想法https://www.javatpoint.com/string-comparison-in-java

答案 2 :(得分:0)

  1. 当您的start值发生变化时?它在这段代码中从未改变过。 在这种情况下,你应该这样做。

    Bundle category = data.getExtras(); start = category.getString("type");

  2. 或按category_text检查条件,如下所示

    if (category_text.equals("Car")) { Toast.makeText(this, "Successful", Toast.LENGTH_LONG).show(); } else { Toast.makeText(this, "Error", Toast.LENGTH_LONG).show(); }