问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何在另外一个类里面获得某个activity的实例

发布网友 发布时间:2022-04-25 20:48

我来回答

1个回答

热心网友 时间:2022-06-17 06:55

 在“手机页面之间的跳转”一文中我介绍了如何运用setContentView()方法切换布局文件Layout的方式进行手机页面间的跳转, 这种适合更改背景,文字颜色,文字内容,但是始终是一个Activity,如果要把主控权移交给另外一个Activity,切换布局文件Layout的方式就办不到了。

  如何把主控权移交给另外一个Activity呢?原理:通过Intent对象和startActivity()方法配合来实现。在主程序里使用startActivity()方法调用另外一个Activity,但是最主要的不是这个startActivity()方法,而是Intent对象,Intent在英文中是“意图”的意思,在主Activity当中,告诉程序自己是什么,并想要前往哪里,这就是Intent对象要做的事情了。在主Activity(ActivityOne)里放置一个按钮,当单击这个按钮的时候,告诉主Activity(ActivityOne)前往ActivityTwo,并在ActivityTwo里放置一个回到主Activity(ActivityOne)的一个按钮。

  实现步骤

  一:布局文件编写

  1.1:第一个布局文件main.xml

  <?xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
>
  <TextView
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="我是ActivityOne"
/>
<Button
  android:id="@+id/mainbtn"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="调用ActivityTwo"
/>
  </LinearLayout>

  1.2:第二个布局文件two.xml

  <?xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
>
  <TextView
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="我是ActivityTwo"
/>
<Button
  android:id="@+id/twobtn"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="调用ActivityOne"
/>
  </LinearLayout>

  二:代码文件编写

  2. 1:MainActivity.java

  package com.menglin.callactivity;

  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;

  public class MainActivity extends Activity
  {
    //声明一个Button对象
    private Button mainbtn = null;
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
      super.onCreate(savedInstanceState);
      //加载main.xml布局文件
      setContentView(R.layout.main);
      //以findViewById()方法取得Button对象
      mainbtn = (Button)findViewById(R.id.mainbtn);
      //给Button对象绑定单击监听事件
       mainbtn.setOnClickListener(listener);
    }

    //监听事件
    private OnClickListener listener = new OnClickListener()
    {
      @Override
      public void onClick(View v)
      {
         //创建一个intent对象
        Intent intent = new Intent();
        //指定原本的class和要启动的class
         intent.setClass(MainActivity.this, TwoActivity.class);
        //调用另外一个新的Activity
        startActivity(intent);
        //关闭原本的Activity
        MainActivity.this.finish();
      }
    };
  }

  2. 2:TwoActivity.java

  package com.menglin.callactivity;

  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;

  public class MainActivity extends Activity
  {
    //声明一个Button对象
    private Button twobtn= null;
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
      super.onCreate(savedInstanceState);
      //加载two.xml布局文件
      setContentView(R.layout.two);
      //以findViewById()方法取得Button对象
      twobtn= (Button)findViewById(R.id.twobtn);
      //给Button对象绑定单击监听事件
       twobtn.setOnClickListener(listener);
    }

    //监听事件
    private OnClickListener listener = new OnClickListener()
    {
      @Override
      public void onClick(View v)
      {
         //创建一个intent对象
        Intent intent = new Intent();
        //指定原本的class和要启动的class
         intent.setClass(TwoActivity.this, MainActivity.class);
        //调用另外一个新的Activity
        startActivity(intent);
        //关闭原本的Activity
        TwoActivity.this.finish();
      }
    };
  }

  三:配置文件

  AndroidMainfest.xml

  1:当系统中新添加了一个Activity时,必须在AndroidMainfest.xml里定义一个新的Activity,由于我们新创建了TwoActivity.java,所以我们需要在AndroidMainfest.xml里加上如下代码,如果不加的话,系统会因为找不到Activity而发生编译性错误。

<activity android:name=".TwoActivity"
android:label="@string/app_name">
</activity>

2:当程序中出现了两个Activity时,系统要决定主程序是哪一支,所以我们需要在AndroidMainfest.xml里定义如下代码,这个参数必须要被定义,如果不加的话,则程序不会被运行。

  其中<category android:name="android.intent.category.LAUNCHER" />,就代表了程序启动时,会运行MainActivity而非TwoActivity。

  <activity android:name=".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>
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
美的面包机和面要多久 美的面包机和面的时间要多长 美的面包机怎么用手动操作 如何用美的面包机发面 如何用美的面包机和面 美的面包机如何和面 CDR教程—教你如何使用CorelDRAW复制图形方法 苹果手机微信怎么换漂亮字体(苹果手机微信怎么换行输入) 有什么好用的app转换字体 手写转文字的软件 erp可以看评论地址吗 淘宝评论url是什么意思? android 如何获取手机当前的Activity实例 请教高人,能说下activity四种启动模式的应用场景吗 activity的启动模式有哪些 Activity具体是怎么创建的?又是怎么显示出来的 如何获取当前正在运行的Activity实例 Activity的启动模式有哪几种,分别用于什么 有LOL“第一美男”称号的欧城,现如今为何看着像50岁抠脚大汉? 网恋这回事,你怎么看? 女生发调皮]中有坏笑咋回复 八岁的甜馨遭网暴,长见识教育被扭曲,国民女儿到底得罪了谁? 女孩在微信说“亲”又发三个大笑表情符什么意思? 英雄联盟里总说的弟弟救我是什么梗? “邓超这两个表情我能笑十年”上了热搜,《创4》现场到底发生了什么? 产出儿什么意思 经常看见易烊千玺粉丝说产出儿 女生说先打钱后发个吃瓜表情什么意思? 吴倩这么漂亮怎么就红不了? 杨幂跟谁聊得这么嗨镜头前还抠脚?你觉得哪一个明星的睡姿吃相最放飞呢? 我是个男的,我今天和我女同桌聊天,她发了个抠鼻的表情,我说她是抠鼻大汉,她说我也是抠脚大汉,我我真 一个白色小人的表情猥琐夸张 抠脚 头发飞起来 桂林有什么好处的小吃推荐吗? 如何保证Activity实例个数唯一(Activity启动模式) 用文字简述怎样实现开机启动应用程序中的某个activity Activity四种启动模式有哪些? android fragment和activity的区别 service怎么得到绑定的activity实例 安卓怎么在自定义控件中获取所在activity的实例 android的activity之间可以传递对象或者集合吗请写写例子 安卓开发,请给个由一个按钮触发另一个activity的简单例子让我学习学习! 如何获取当前运行的屏幕的activity的实例对象 android activity单实例化什么意思? 怎么保存activity实例,不用刷新 如何获取activity的实例对象。要获得实例对象。不是Activity名称。 流月小限是在流年小限位上起正月是逆轮还是顺轮? 八字如何断大运流年流月与命局作用关系的原则和分析技巧 流年流月流日什么意思 紫微斗数怎么定流月,流日的命宫? 请教,紫微命盘怎么看? 请高手解读一下 紫薇命盘。 谁能帮我解释一下这个紫薇命盘? 七杀庙天空养10 22 34 46 58 70 82贯索将军44 - 53 天煞事业流月大限小限丙辰 是什么意思