Activity间的跳转,startActivity与startActivityForResult

本文介绍Android应用中不同Activity间的跳转方法及其数据传递技巧,包括使用Intent进行简单的跳转以及通过startActivityForResult实现带返回值的跳转。

跳转 (由一个画面跳转到另一个画面)
两种方法:Intent中 startActivity、startActivityForResult。
后者可设置requestCode(申请码)用于获得返回值,即由一个画面传数据到
多个画面(相同的数据),完成不同的功能,此时的requestCode的可通过判断
来获得返回值。
例;startActivity 在第一个画面中设置一个按钮,按下按钮跳转到第二个画面。
lay_out中,相对布局中设置一个Button,id为bt1;


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.administrator.jreduch04.MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/bt1"
android:text="跳转"
android:layout_below="@+id/textView"
android:layout_alignStart="@+id/bt2"
android:layout_marginTop="52dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/bt2"
android:text="跳转返回结果"
android:layout_below="@+id/bt1"
android:layout_toEndOf="@+id/textView"
android:layout_marginTop="52dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="100dp"
android:id="@+id/tv"
android:text="结果是:"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_marginBottom="102dp"
android:textColor="#ee1414"
android:textIsSelectable="false" />
</RelativeLayout>

MainActivity:


package com.example.administrator.jreduch04;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
private Button bt1; //设置以一个Button,测试startActivity
private Button bt2; //设置第二个Button,测试startActivityForResult
private TextView tv; //设置一个TextView ,用于显示测试startActivityForResult返回的值

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt1 = (Button) findViewById(R.id.bt1);//通过 findViewById找到
//Button,设置id的作用就是
//通过findViewByld找到;
tv = (TextView) findViewById(R.id.tv);
bt2 = (Button) findViewById(R.id.bt2);
bt1.setOnClickListener(new View.OnClickListener() { //设置一个bt1的
@Override //点击事件
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent); //Intent的 
//有两个参数,
} //MainActivity.this(第一个画面)
}); //SecondActivity.class(第二个画面)


button.setOnClickListener(new View.OnClickListener() { //设置一个Button,
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,ThActivity.class);
startActivityForResult(intent, 119);
}
});
bt2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("arg1",5); //intent.putExtra把名为arg1值为5,arg2
intent.putExtra("arg2", 6); //值为6,传给SecondActivity
startActivityForResult(intent, 110); //110自己设置,即为申请码

}
});
protected void onActivityResult(int requestCode, int resultCode, Intent data) { //与startActivityForResult配套
super.onActivityResult(requestCode, resultCode, data); //requestCode(申请码), 用于判断
Intent intent = getIntent(); //发出的哪个请求 resultCode(结果吗), 
if(requestCode ==110){ //110即为上面设置的 //可用来判断是哪个Activity返回的数据
tv.setText("结果是加法:" + resultCode);} //resultCode为SecondActivity中设置的结果码 ,但结果码为"arg1+arg2",就实现了相加的操作
else if(requestCode ==119){
tv.setText("老师:"+data.getStringExtra("re"));//得到ThActivity中的EditView中的文本

}
}

 


package com.example.administrator.jreduch04;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

public class SecondActivity extends AppCompatActivity { //SecondActivity 第二个画面

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Intent intent= getIntent(); //必须使用Intention方法
int arg1 = intent.getIntExtra("arg1",0);//调用方法intention.getIntExtra
int arg2 = intent.getIntExtra("arg2",0); //得到MainActivity穿来的
//arg1,arg2;第二个参数为没得到
//setResult(120); //arg1,arg2时的数值。
if(arg1>0 && arg2>0){
setResult(arg1+arg2,intent); //setResult中的第一个参数为resultCode,第二个参数为Intention date,返回相加的数值,
finish(); //不能漏掉,否则不能返回第一个画面
}
}
}

package com.example.administrator.jreduch04;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView; //实现由MainActrivity跳转到ThActivity
//输入问题答案,再MainActivity中显示
public class ThActivity extends AppCompatActivity { //设置第三个Activity
private EditText editText; //设置EditView,输入问题答案
private Button button3; //按下button在MainActivity中显示
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_th);

editText= (EditText) findViewById(R.id.editText);
button3 = (Button) findViewById(R.id.button3);
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=getIntent();
final String st= editText.getText().toString();//得到输入到EditView中的文本
intent.putExtra("re", st); //调用intent.putExtra,返回
setResult(1, intent);
finish();
}
});
}
}

 

内容概要:本文介绍了一项创新性未发表的研究,即利用多元宇宙优化算法(Multiverse Optimizer, MVO)对分时电价下的求响应综合能源系统调度问题进行建模求解,旨在实现能源系统的经济性、高效性可持续性运行。该研究构建了包含多种能源设备(如光伏、风机、燃气轮机、储能系统等)及可调节负荷的综合能源系统模型,充分考虑了用户侧的求响应行为在分时电价机制下的响应特性,通过MVO算法对系统运行成本、能源利用率、碳排放等多目标进行协同优化,实现了日前调度计划的智能决策。研究还提供了完整的MATLAB代码实现,便于研究人员复现实验、验证算法性能,并为进一步研究提供可靠的仿真基础。; 适合人群:具备一定电力系统、优化算法及MATLAB编程基础的科研人员、研究生以及从事能源互联网、综合能源系统规划运行的技术工程师。; 使用场景及目标:① 学习并掌握多元宇宙优化算法在复杂能源系统调度中的具体应用方法;② 研究分时电价机制如何通过求响应引导用户参电网互动,实现削峰填谷;③ 实现综合能源系统(IES)中冷、热、电、气等多种能源的协同优化调度,以降低运行成本、提高新能源消纳能力系统可靠性;④ 为相关领域的学术研究提供可复现的代码实例仿真平台。; 阅读建议:此资源以MATLAB代码为核心载体,深入剖析了算法应用系统建模的全过程。建议读者在学习时,不仅应关注代码的实现细节,更要理解其背后的数学模型、优化目标设定约束条件的物理意义。建议结合文档中的模型描述,逐步调试代码,观察不同参数场景下的优化结果,从而深刻掌握综合能源系统优化调度的设计思想关键技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值