Activity_1

来源:互联网 发布:跑步软件排名 编辑:程序博客网 时间:2024/06/05 23:43

1.intent:(ComponentName Action Data Category Extra Flag)

  • 1.在一个程序内部 使用 ComponentName 即类名进行请求。
  • 2.在程序中若需要调用其他程序的方法,可以通过其他程序已声明的intent filter(Action Data Category)进行请求。
  • 如:activity 的启动
  • <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
  •                 <category android:name="android.intent.category.LAUNCHER" />

  • 3.Android系统内置了很多功能模块给其他人使用,故定义不很多action/category常量供大家使用

2.MVC model

 

Model:

  • 模型,其实就是业务逻辑与义务数据
  • 计算器程序中的Calculator就是Model,负责计算并产生显示用的结果

View:

  • 界面,负责显示Model并与人交互
  • 计算器中的layout文件代表不view,会被读入并生成view对象树,通过Activity.setContentView(...) 与Activity绑定

Controller:

  • 控制器,负责接受view的用户操作,更新Model内容,从Model得到相关数据,根据一定规则决定刷新当前view或显示新的view
  • 计算器中的MainActivity就是Controller,从界面得到用户输入的键,启动Calculator计算,并刷新界面上的结果text view

 

3.例子:两个Activity之间跳转

功能:从MainActivity点击按钮后跳到OtherActivity,显示从MainActivity带过来的名字

 

public class MainActivity extends Activity {

 private Button myButton;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myButton = (Button)findViewById(R.id.myButton);
       
        myButton.setOnClickListener(new MyButtonListener());  
    }

 

class MyButtonListener implements OnClickListener{
  @Override
  public void onClick(View arg0) {
   // TODO Auto-generated method stub
   Intent intent = new Intent();
   intent.setClass(MainActivity.this,OtherActivity.class);
   intent.putExtra("name", "123");
   MainActivity.this.startActivity(intent);
   
  }

/////////////////////////////

public class OtherActivity extends Activity {
  
 private TextView tv;
 
  public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);  //必须调用,否则Activity初始化未完成
   setContentView(R.layout.otheractivity);
      tv = (TextView)findViewById(R.id.textView);
     
      Intent intent = getIntent();
      String name = intent.getExtras().getString("name");
     
      tv.setText(name);
      //Intent intent = getIntent();
     }
}