第一行代码ANDROID 第二章

1.在活动中使用Toast

 1 public class HelloWorldActivity extends AppCompatActivity {
 2 
 3     @Override
 4     protected void onCreate(Bundle savedInstanceState) {
 5         super.onCreate(savedInstanceState);
 6         setContentView(R.layout.hello_world_layout);
 7         Button button=(Button)findViewById(R.id.button);
 8         button.setOnClickListener(new View.OnClickListener() { //为按钮注册一个监听器
 9             @Override
10             public void onClick(View v) {
11                 Toast.makeText(HelloWorldActivity.this,"you are button",Toast.LENGTH_SHORT).show();
12 
13             }
14         });
15     }
16 }
HelloWorldActivity

2.菜单Menu

3.Intent 

 1 public class FirstActivity extends AppCompatActivity {
 2 
 3     @Override
 4     protected void onCreate(Bundle savedInstanceState) {
 5         super.onCreate(savedInstanceState);
 6         setContentView(R.layout.hello_world_layout);
 7         Button button=(Button)findViewById(R.id.button);
 8         button.setOnClickListener(new View.OnClickListener() { //为按钮注册一个监听器
 9             @Override
10             public void onClick(View v) {
11                 Intent intent=new Intent(FirstActivity.this,SecondActivity.class);//FirstActivity.this做上下文,传入SecondActivity.class作为活动目标
12                 startActivity(intent);//打开活动
13 
14             }
15         });
16     }
17 }
用Intent启动一个活动

使用这种方式启动活动,意图明显,称显式Intent

隐式Intent:

1 <activity android:name=".SecondActivity">
2             <intent-filter>
3                 <action android:name="com.example.cxx.helloworld.ACTION_START"/> //指明了当前活动可以响应com.example.cxx.helloworld.ACTION_START这个action
4                 <category android:name="android.intent.category.DEFAULT"/>  //附加信息,更精确地指明了当前的活动能够响应的Inten中还可能带有category
5             </intent-filter>
6 
7         </activity>

只有<action>和<category>同时匹配才能影响Intent 

更多隐式用法......

 1 public class FirstActivity extends AppCompatActivity {
 2 
 3     @Override
 4     protected void onCreate(Bundle savedInstanceState) {
 5         super.onCreate(savedInstanceState);
 6         setContentView(R.layout.hello_world_layout);
 7         Button button=(Button)findViewById(R.id.button);
 8         button.setOnClickListener(new View.OnClickListener() { //为按钮注册一个监听器
 9             @Override
10             public void onClick(View v) {
11                 String data = "you are air";
12                 Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
13                 intent.putExtra("mima", data);  //此方法第一个参数是键,第二个是要传的数据
14                 startActivity(intent);
15 
16             }
17         });
18     }
19 }
向下一个活动传递数据
 1 public class SecondActivity extends AppCompatActivity {
 2 
 3     @Override
 4     protected void onCreate(Bundle savedInstanceState) {
 5         super.onCreate(savedInstanceState);
 6         setContentView(R.layout.second_layout);
 7         Intent intent=getIntent();//通过getIntent()方法获取用于启动SecondActivity的Intent
 8         String data=intent.getStringExtra("mima");//传递的是字符串所以用getStringExtra方法来获取传递的数据
 9         Log.d("SecondActivity", data);
10 
11 
12     }
13 }
向下一个活动传递数据1
 1 public class FirstActivity extends AppCompatActivity {
 2 
 3     @Override
 4     protected void onCreate(Bundle savedInstanceState) {
 5         super.onCreate(savedInstanceState);
 6         setContentView(R.layout.hello_world_layout);
 7         Button button=(Button)findViewById(R.id.button);
 8         button.setOnClickListener(new View.OnClickListener() { //为按钮注册一个监听器
 9             @Override
10             public void onClick(View v) {
11                 Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
12                 startActivityForResult(intent, 1);  //在活动销毁时能返回一个结果给活动
13 
14             }
15         });
16     }
17 }
返回数据给上一个活动(FirstActivity)
 1 public class SecondActivity extends AppCompatActivity {
 2 
 3     @Override
 4     protected void onCreate(Bundle savedInstanceState) {
 5         super.onCreate(savedInstanceState);
 6         setContentView(R.layout.second_layout);
 7         Button button2 = (Button) findViewById(R.id.button2);
 8         button2.setOnClickListener(new View.OnClickListener() {
 9             @Override
10             public void onClick(View v) {
11                 Intent intent = new Intent();       //创建了个Intent,仅仅是用于传递数据而已。紧接着把要传递的数据放在Intent中
12                 intent.putExtra("mima", "woshi a");
13                 setResult(RESULT_OK, intent);     //专用于向上一个活动返回数据,第一个参数用于向上一个活动返回处理结果一般只使用RESUKT_OK和RESUKT_CANCEKED,第二个把带数据的Intent传递回去
14                 finish();
15             }
16         });
17 
18     }
19 }
返回数据给上一个活动1(SecondActivity)

由于是用 startActivityForResult方法来启动SecondActivity的,在SecondActivity被销毁后会回调上一个活动的onActivityResult方法,如下所示:

 1 protected void onActivityResult(int requestCode,int resultCode,Intent data){
 2         switch (requestCode){
 3             case  1:
 4                 if (resultCode==RESULT_OK){
 5                     String returnedData=data.getStringExtra("mima");
 6                     Log.d("FirstActivity", returnedData);
 7                 }
 8                 break;
 9             default:
10         }
11     }
12     }

onActivityResult带3个参数,第一个即启动活动时传入的请求码,第二个返回数据时传入的处理结果,第三个携带着回返数据的Intent

按下Back键回到FirstActivity也要数据返回,可以在SecondActivity中重写onBackPressed()方法,代码如下

1 public void onBackPressed(){
2         Intent intent = new Intent();
3         intent.putExtra("data_return","dddddddddddddddddddddddddddddddddddddd");
4         setResult(RESULT_OK, intent);finish();
5     }

 

4.活动状态:运行状态,暂停状态(不处于栈顶,但仍可见),停止状态(保存相应的状态和成员变量),销毁状态

活动的生产周期

onCreater() 他会在活动第一次被创建时调用,完成活动初始化操作,加载布局、绑定事件等

onStart()不可见变为可见时调用

onResume()活动位于反回栈栈顶

onPause()系统准备去启动或恢复另一个活动时调用

onStop()活动完全不可见调用

onDestroy()活动销毁前调用,之后状态变为销毁状态

onRestart()停止状态变为运行状态前调用

 

5.活动被回收了怎么办

6活动的启动模式

standard 每次启动都会创建该活动的一个新的实例

singleTop 启动活动时,如果发现返回栈的栈顶已经是该活动,会直接使用而不会再创建新的实例,不过活动为处于栈顶位置时,还是会创建新的实例

singleTask 让活动上下文只存在一个实例

singleInstance启用一个新的返回栈,实现共享活动实例

 

转载于:https://www.cnblogs.com/a00220/p/6886632.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值