第一行代码Android学习(十二)

原创 2016年08月30日 11:26:53

第一行代码Android学习:第十二部分主要涉及到全局获取context的技巧、使用Intent传递对象、定制自己的日志工具

  • AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.dyhdm_12_00test"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:name="com.example.dyhdm_12_00test.MyApplication"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.dyhdm_12_00test.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.example.dyhdm_12_00test.Main2Activity"
            android:label="@string/title_activity_main2" >
        </activity>
    </application>

</manifest>
  • activity_main.xml
<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"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/bt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/hello_world" />

</RelativeLayout>
  • activity_main2.xml
<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"
    tools:context=".Main2Activity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/hello_world2" />

</RelativeLayout>
  • MyApplication.java
/*
 * @Title:  MyApplication.java
 * @Description:  TODO 
 * @author:  张志安
 * @date:  2016-8-30 上午10:12:46
 * 
 */
package com.example.dyhdm_12_00test;

import android.app.Application;
import android.content.Context;

/**
 * TODO 定制一个自己的Application,为了个在项目的任何地方都能获取到Context.
 *      注意要修改AndroidManifest.xml
 *      获取Context:MyApplication.getContext()
 * @author  张志安
 * @date:  2016-8-30 上午10:12:46
 */
public class MyApplication extends Application {
    public static Context context;

    @Override
    public void onCreate() {
        context = getApplicationContext();
    }

    public static Context getContext(){
        return context;
    }
}
  • Person.java
/*
 * @Title:  Person.java
 * @Description:  TODO 
 * @author:  张志安
 * @date:  2016-8-30 上午10:25:06
 * 
 */
package com.example.dyhdm_12_00test;

import java.io.Serializable;

/**
 * TODO 实现序列化接口的Person类 所有的Person对象都可以序列化
 * 
 * @author 张志安
 * @date: 2016-8-30 上午10:25:06
 */
public class Person implements Serializable {

    private String name;
    private String age;

    public String getName() {
        return name;
    }

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

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

}
  • LogUtil.java
/*
 * @Title:  LogUtil.java
 * @Description:  TODO 
 * @author:  张志安
 * @date:  2016-8-30 上午10:34:55
 * 
 */
package com.example.dyhdm_12_00test;

import android.util.Log;

/**
 * TODO 定制自己的日志工具
 *      打印一行DEBUG级别的日志可以写成LogUtil.d("zza","123")
 *      只需要修改LEVEL的值就可以自由控制打印行为
 * 
 * @author 张志安
 * @date: 2016-8-30 上午10:34:55
 */
public class LogUtil {

    public static final int VERBOSE = 1;

    public static final int DEBUG = 2;

    public static final int INFO = 3;

    public static final int WARN = 4;

    public static final int ERROR = 5;

    public static final int NOTHING = 6;

    public static final int LEVEL = VERBOSE;

    public static void v(String tag, String msg) {
        if (LEVEL <= VERBOSE) {
            Log.v(tag, msg);
        }
    }

    public static void d(String tag, String msg) {
        if (LEVEL <= DEBUG) {
            Log.d(tag, msg);
        }
    }

    public static void i(String tag, String msg) {
        if (LEVEL <= INFO) {
            Log.i(tag, msg);
        }
    }

    public static void w(String tag, String msg) {
        if (LEVEL <= WARN) {
            Log.w(tag, msg);
        }
    }

    public static void e(String tag, String msg) {
        if (LEVEL <= ERROR) {
            Log.e(tag, msg);
        }
    }
}
  • MainActivity.java
package com.example.dyhdm_12_00test;

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

public class MainActivity extends Activity {

    private Button bt;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 测试MyApplication.getContext()
        Toast.makeText(MyApplication.getContext(), "Test", Toast.LENGTH_SHORT)
                .show();
        // 测试使用Intent传递对象
        bt = (Button) findViewById(R.id.bt);
        bt.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Person p = new Person();
                p.setAge("21");
                p.setName("zza");
                Intent intent = new Intent(MyApplication.getContext(),
                        Main2Activity.class);
                intent.putExtra("data", p);
                startActivity(intent);
            }
        });
        // 测试定制的日志工具
        LogUtil.i("zza", "123");
    }

}
  • Main2Activity.java
package com.example.dyhdm_12_00test;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.Toast;

public class Main2Activity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 获取通过intent传递的对象
        Person p = (Person) getIntent().getSerializableExtra("data");
        setContentView(R.layout.activity_main2);
        Toast.makeText(MyApplication.getContext(),
                "Name:" + p.getName() + " Age:" + p.getAge(),
                Toast.LENGTH_SHORT).show();
    }
}

代码下载地址

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

【第一行代码-Android】学习(一)及在studio的迁移(5)存储数据

1、文件存储    核心:Context类的openFileInput()和openFileOutput(),Java流进行读写操作。      不适合于保存一些较为复杂的文本数据。   a)写入: ...
  • Djoli
  • Djoli
  • 2016年08月31日 18:54
  • 150

《第一行代码-Android》学习笔记(二十一)WebView控件总结【修改】

1.加载页面1.1.web资源 webview.loadUrl("http://192.168.1.100:8080/Web/index.html") 1.2.本地资源本地文件使用:webView.l...

第一行代码Android学习(十)

第一行代码Android学习:第十部分主要涉及到Android多线程编程和Service的用法

数据存储之SharedPreferences存储——第一行代码Android学习笔记

SharedPreferences 是使用键值对的方式来存储数据的。SharedPreferences 文件都是存放在/data/data/name>/shared_prefs/目录下的。 ...

《第一行代码-Android》学习笔记(二十二)

一.HttpURLConnection学习 1.new出一个URL对象: 2.利用URL的实例方法:openConnection()获取到URLConnection对象,再向下强制转换为HttpU...

第一行代码学习笔记1——Android简介

1,Android系统架构: 1.1 Linux内核层 这一层为Android的设备的各种硬件提供了底层的驱动,如显示驱动,音频驱动等。 ...
  • cyy3900
  • cyy3900
  • 2016年03月01日 20:48
  • 228

Android第一行代码学习笔记三----广播

简介 Android 中的广播主要可以分为两种类型,标准广播和有序广播。 标准广播:完全异步执行,效率会比较高,无法被截断。 有序广播:同步执行,广播接收器有先后顺序,可以截断。 ...

《第一行代码Android》学习日记1

Android 开发环境搭建与Hello World项目运行 1.下载安装JDK并对环境变量进行配置 (1)将绝对安装地址加入到环境变量中的Path变量,保证Java程序的可用性。 (2)在...

Android第一行代码学习笔记八----网络技术

1、WebView 借助WebView控件在应用程序里嵌入一个浏览器。 首先修改activity_main.xml,示例代码如下: ...

第一行代码Android学习(三)

第一行代码Android学习:第三部分主要涉及到简单的自定义控件和优化后ListView的写法...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第一行代码Android学习(十二)
举报原因:
原因补充:

(最多只允许输入30个字)