Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在活动之间传递值_Java_Android_Android Activity - Fatal编程技术网

Java 如何在活动之间传递值

Java 如何在活动之间传递值,java,android,android-activity,Java,Android,Android Activity,我创建了3个活动:firstActivity,secondActivity,和thirdActivity firstActivity是主要活动 secondActivity只有在收到短消息后才会工作,然后将消息发送到thirdActivity thirdActivity将字符串值转换为双精度值,然后将双精度值发送到firstActivity 我可以将值从secondActivity发送到thirdActivity,但我不知道如何传递值​​从thirdActivity到firstActivity。

我创建了3个活动:
firstActivity
secondActivity
,和
thirdActivity

  • firstActivity
    是主要活动
  • secondActivity
    只有在收到短消息后才会工作,然后将消息发送到
    thirdActivity
  • thirdActivity
    将字符串值转换为双精度值,然后将双精度值发送到
    firstActivity

  • 我可以将值从
    secondActivity
    发送到
    thirdActivity
    ,但我不知道如何传递值​​从
    thirdActivity
    firstActivity
    。请告诉我应该怎么做。

    有几种方法

    一种是使用自定义应用程序类为整个应用程序存储某种“全局值”。这样,您可以在
    firstActivity
    中设置值,并在
    thirdActivity
    中使用它们


    看看SO问题,了解如何在Android应用程序中存储全局状态。

    无论何时,只要有一个需要结果的活动被调用,比如在本例中,你有第三个活动,你总是可以使用该方法,而不仅仅是startActivity。一旦thirdActivity完成了它的处理,并且它想要返回结果值,它应该调用setResult,就这样


    这个方法的问题是你中间有第二个活动。真的有必要吗

    谢谢你的帮助。现在我可以将值从thirdActivity传递到firstActivity,这就是我的方法

    第三十届:

    public class ThirdActivity extends Activity {
    
    double value1, value2;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        ...
    
        value1 = Double.parseDouble(value1FromSecondActivity);
        value2 = Double.parseDouble(value2FromSecondActivity);      
    
        Intent intent = new Intent(this, FirstActivity.class);
        intent.putExtra("Value1", value1);
        intent.putExtra("Value2", value2);
        startActivity(intent);
        finish();
        }
    } 
    
    public class FirstActivity extends Activity {
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        ...
    }   
    
    @Override
    protected void onResume() {
        Bundle extras = getIntent().getExtras();
        if (extras != null) {
            dValue1 = extras.getDouble("Value1");
            dValue2 = extras.getDouble("Value2");
            Toast.makeText(getBaseContext(), dValue1 + " : " + dValue2, Toast.LENGTH_SHORT).show();
        }
        else {
            Toast.makeText(getBaseContext(), "Null", Toast.LENGTH_SHORT).show();
        }
        super.onResume();
        }
    }
    
    第一项活动:

    public class ThirdActivity extends Activity {
    
    double value1, value2;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        ...
    
        value1 = Double.parseDouble(value1FromSecondActivity);
        value2 = Double.parseDouble(value2FromSecondActivity);      
    
        Intent intent = new Intent(this, FirstActivity.class);
        intent.putExtra("Value1", value1);
        intent.putExtra("Value2", value2);
        startActivity(intent);
        finish();
        }
    } 
    
    public class FirstActivity extends Activity {
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        ...
    }   
    
    @Override
    protected void onResume() {
        Bundle extras = getIntent().getExtras();
        if (extras != null) {
            dValue1 = extras.getDouble("Value1");
            dValue2 = extras.getDouble("Value2");
            Toast.makeText(getBaseContext(), dValue1 + " : " + dValue2, Toast.LENGTH_SHORT).show();
        }
        else {
            Toast.makeText(getBaseContext(), "Null", Toast.LENGTH_SHORT).show();
        }
        super.onResume();
        }
    }
    

    是的,这是必要的。我想用BroadcastReceiver接收短信,然后发送给thirdActivity。从你的回答中,你能给我举个例子吗?我想说,你在那里做的事情并不需要3项活动。您现在在thirdActivity中执行的解析过程可以很好地在firstActivity中完成,只要它从secondActivity(我假定它是一个BroadcastReceiver)获得“原始”消息。