设为首页 加入收藏

TOP

Android开发初体验(六)
2017-10-12 11:15:06 】 浏览:10089
Tags:Android 开发 体验
droid:id="@+id/answer_text_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="24dp" tools:text="Answer"/> <Button android:id="@+id/show_answer_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/show_answer_button"/> </LinearLayout>

activity_cheat.xml 效果图

  • 注意用于显示答案的TextView组件,它的tools和tools:text属性的命名空间比较特别。该命名空间可以覆盖某个组件的任何属性。这样,可在预览中看到效果,而在运行时Answer文字不会显现出来。
  • 应用的所有activity都必须在manifest配置文件中声明,这样操作系统才能找到它们。
//在manifest配置文件中声明CheatActivity
<activity android:name=".CheatActivity">
        </activity>

启动activity

public void startActivity(Intent intent)

activity调用startActivity(Intent)方法时,调用请求实际发给了操作系统的ActivityManager。ActivityManager负责创建Activity实例并调用其onCreate(Bundle)方法

public Intent(Context pageContext,Class<?> cls)

传入该方法的Class类型参数告诉ActivityManager应该启动哪个activity

Context参数告诉ActivityManager在哪里可以找到它

    mCheatButton=(Button)findViewById(R.id.cheat_button);
    mCheatButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //从QuizActivity启动CheatActivity
            Intent i=new Intent(QuizActivity.this,CheatActivity.class);
            startActivity(i);   
        }
    });

activity间数据传递

  • 使用 intent extra

将extra数据信息添加给intent,调用Intent.putExtra(...)方法

public Intent putExtra(String name,boolean value)
 Intent i=new Intent(QuizActivity.this,CheatActivity.class);
 i.putExtra(EXTRA_ANSWER_IS_TRUE,answerIsTrue);
 startActivity(i)

从extra获取数据

public boolean getBooleanExtra(String name,boolean defaultValue)
 mAnswerIsTrue=getIntent().getBooleanExtra(EXTRA_ANSWER_IS_TRUE,false);

Activity.getIntent()方法返回了由startActivity(Intent)方法转发的Intent对象

  • 从子activity获取返回结果
//父activity
/*第二个参数是请求码,*/
public void startActivityForResult(Intent intent,int requestCode)

//子activity发送返回信息给父activity,有2种方法
public final void setResult(int resultCode)
public final void setResult(int resultCode,Intent data)

resultCode可以是以下任意一个预定义常量

  • Activity.RESULT_OK ,即1
  • Activity.RESULT_CANCELED ,即0

如需自定义结果代码,还可使用另一个常量:RESULT_FIRST_USER

//父,QuizActivity
 private static final int REQUEST_CODE_CHEAT=0;
 
 mCheatButton.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {
            boolean answerIsTrue=mQuestionBank[mCurrentIndex].isAnswerTrue();
            
            Intent i=new Intent(QuizActivity.this,CheatActivity.class);
            i.putExtra(EXTRA_ANSWER_IS_TRUE,answerIsTrue);
            startActivityForResult(i,REQUEST_CODE_CHEAT);
        }
});
//处理返回结果
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        //super.onActivityResult(requestCode, resultCode, data);
        //结果码不一致
        if (resultCode!= Activity.RESULT_OK){
            return;
        }
        //结果码一致
        if (requestCode==REQUEST_CODE_CHEAT){
            if (data==null){
                return;
            }
            //解析结果intent
            mIsCheater=data.getBooleanExtra(EXTRA_ANSWER_SHOW,false);
            
        }
    }
//子,CheatActivity
 Intent data=new Intent();
 data.putExtra(EXTRA_ANSWER_SHOW,isAnswerShown);
 setResult(RESULT_OK,data);//设置返回结果
 

10. activity的使用与管理

被指定为应用的第一个activity

<!--指定第一个acti
首页 上一页 3 4 5 6 下一页 尾页 6/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Android开发初体验 下一篇Android开发初体验

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目