Application值传递。

1、layout下面的布局

activity_main.xml

<?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.app.androidvaluespass.MainActivity">

    <Button
        android:id="@+id/btnSubmit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="值传递"/>

</RelativeLayout>

values.xml用于接收值

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

  <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/Msg"/>

</LinearLayout>

2、类及启动项

MainActivity

package com.example.app.androidvaluespass;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {

    private Button btn;
    private MyApp myApp;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn = (Button)this.findViewById(R.id.btnSubmit);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                myApp = (MyApp)getApplication();
                myApp.setName("赵信!");//修改后的名称
                Intent intent = new Intent(MainActivity.this,ValuesActivity.class);
                startActivity(intent);
            }
        });
    }
}

定义一个Application类 MyApp

package com.example.app.androidvaluespass;

import android.app.Application;

/**
 * Created by honghong on 2016/6/18.
 */
public class MyApp extends Application {

    public String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        setName("张三");
    }
}

定义一个接收值的类

package com.example.app.androidvaluespass;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

/**
 * Created by honghong on 2016/6/18.
 */
public class ValuesActivity extends Activity {

    private MyApp myApp;
    private TextView editText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.values);
        editText = (TextView)this.findViewById(R.id.Msg);
        myApp = (MyApp)getApplication();
        editText.setText(myApp.getName());
    }
}

最后要在AndroidManifest.xml 文件中配置一下

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.app.androidvaluespass">

    <application
        android:name=".MyApp" // ← 继承Application类的名称,这个一定要对应。
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".ValuesActivity"></activity>  // 这个类调用Application类ValuesActivity
    </application>

</manifest>
时间: 2024-07-29 13:50:13

Application值传递。的相关文章

Struts通配符与值传递

通配符: 在编写视图对应关系的时候有多种方法: 一个action对象使用默认的execute方法在配置文件中一个配置: <action name="user_add" class="me.rain.action.UserAction> <result>user/add.jsp</result> </action> 在一个action中有多种方法,这样可以减少action对象的数量,但是不会减少配置的数量: <action

页面之间值传递常用的几种方式

1.QuerySting在页面间传递值 这种方法的写法:在要传递值的页面,Response.Redirect(url),值包含在在url中.接收值得页面,Request.QueryString["变量名"]. 这是使用起来很简单的一种方式,但是它不是很安全,因为值会在浏览器里的地址栏里显示.并且它也不能传递对象,对长度也有限制,如果要传递的值很多,且对安全要求也高的话,这种方式就不适合了. 2.Session变量 我们通常在一个页面中,将值放到session变量中,在另外几个页面使用它

Android笔记(二十) Activity中的跳转和值传递

我们知道,一个APP是由若干个Activity组成的,那么各个Acitivity中肯定需要进行跳转以及传递数值以保证App的运行,现总结一下多个Activity之间的跳转和值传递. 简单的跳转 AndroidManiFest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/andro

Struts2学习笔记(2)值传递

1.action接收jsp传过来的值: a.定义一个User类   有name  pwd属性,  添加相应的get,set方法   b.<!-- 方式1 普通java类 -->  在UserAction中    添加: private User user;  并添加相应的get,set方法 <!-- 方式2 实现ModelDriven<T>接口-->   在UserAction中   @Override   public User getModel() {    ret

JAVA中只有值传递

今天,我在一本面试书上看到了关于java的一个参数传递的问题: 写道 java中对象作为参数传递给一个方法,到底是值传递,还是引用传递? 我毫无疑问的回答:"引用传递!",并且还觉得自己对java的这一特性很是熟悉! 结果发现,我错了! 答案是: 值传递!Java中只有按值传递,没有按引用传递! 回家后我就迫不及待地查询了这个问题,觉得自己对java这么基础的问题都搞错实在太丢人! 综合网上的描述,我大概了解了是怎么回事,现在整理如下,如有不对之处望大神提出! 先来看一个作为程序员都熟

通过$broadcast或$emit在子级和父级controller之间进行值传递

1 通过$broadcast或$emit在controller之间进行值传递,不过这些controller必须是子级或者父级关系, 2 $emit只能向父级parent controller传递事件event与数据data,$broadcast只能向子级child controller传递event与data,$on用于接收event与data. 3 <script> 4 var myapp=angular.module('myapp',[]); 5 myapp.controller('Sel

值传递 引用传递

方法参数传递有2种方式: 值传递和引用传递. 值传递: 默认都是值传递.值传递有2种,值类型和引用类型的.实质是复制栈中的值. 值类型的值传递:栈中的值就是实际值. 引用类型的值传递:栈中的值是内存堆中地址. 引用传递: 参数前加ref的为引用传递,引用传递有2种,值类型和引用类型的.实质就是传递自己本身,只是多了个别名.

java值和地址值传递、字符串常量池的理解

#java值和地址值传递的理解: - 基本数据类型和基本数据类型的封装类都是:值传递 * 形式参数的改变不会影响实际参数的改变(相当于将值复制一份传递给形参,自身没做任何改变) - 引用数据类型都是 地址值传递 * 形式参数的改变会影响实际参数的改变(将地址值赋值给形参,形参就可以指向实参所指向的地址, 即形参也可以操作实参指向地址的数据了) #注意:String是个特例(当作基本类型处理) - 分析:从String类的源码可以知道,String相当于是char[]的封装类,即具有char类型的

java 引用传递和值传递

1.为什么要分值传递和引用传递: 基本类型存在在栈中,复合类型(对象)存在堆中.操作栈的速度要快于堆,且对象的复制相比基本类型不仅浪费内存而且速度比较慢. 从这里就可以看出来:对象是按照引用传递(数据库事务封装Connection对象传递的时候最能体现这点):基本类型是按照值传递. 2.那为什么String类型传递后会表现的值传递的特性:这并不是由于值传递而导致的,而是由于String类的不可变性(只读特性)导致的.String类型按照引用传递,但是一旦改变了,就变成新的对象了,原来引用指向的对