Android 基础知识:Activity


概念

Activity 是与用户交互的入口点,简单来说 Activity 类似于一个 Web 的页面,表示拥有整个屏幕的界面

电子邮件应用可能有一个显示新电子邮件列表的 Activity、一个用于撰写电子邮件的 Activity 以及一个用于阅读电子邮件的 Activity。所以,一个 App 拥有多个 Activity。而一个 Web App 也是由多个页面组成的。

尽管这些 Activity 通过协作在电子邮件应用中形成一种紧密结合的用户体验,但每个 Activity 都独立于其他 Activity 而存在。因此,其他应用可以启动其中这个应用中的任何一个 Activity(如果电子邮件应用允许)。

也就是说,A 应用中的某个 Activity 在允许的情况下,可以被 B 应用的某个 Activity 调用。例如,相册应用可以点击分享按钮给你的 QQ 好友。

案例

通过Intent做一个简单的应用内 A Activity 跳转到 B Activity,并展示消息在 B Activity 的案例。

Intent是在相互独立的组件(比如两个 Activity)之间提供运行时绑定功能的对象。可以应用于两个应用间的通讯交互,也能够应用于在同一个应用下不同组件的交互(Activity、Service、Broadcast Receiver)。

MainActivity

界面代码

<EditText
  android:id="@+id/editText"
  android:layout_width="200dp"
  android:layout_height="wrap_content"
  android:layout_marginStart="104dp"
  android:layout_marginTop="340dp"
  android:hint="@string/input_hint"
  app:layout_constraintStart_toStartOf="parent"
  app:layout_constraintTop_toTopOf="parent" />

<Button
  android:id="@+id/routeButton"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_marginStart="160dp"
  android:layout_marginTop="72dp"
  android:onClick="sendMessage"
  android:text="@string/button_text"
  app:layout_constraintStart_toStartOf="parent"
  app:layout_constraintTop_toBottomOf="@+id/editText" />

Button 控件绑定点击事件sendMessage

逻辑代码

public class MainActivity extends AppCompatActivity {
  public static final String EXTRA_MESSAGE = "com.example.Message";

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  }

  public void sendMessage(View view) {
    Intent intent = new Intent(this, MessageActivity.class);
    EditText editText = findViewById(R.id.editText);
    String message = editText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);
    startActivity(intent);
  }
}

MessageActivity

界面代码

<TextView
  android:id="@+id/textView"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:textSize="80sp" />

逻辑代码

public class MessageActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_message);

    Intent intent = getIntent();
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
    TextView textView = findViewById(R.id.textView);
    textView.setText(message);
  }

}

演示效果

image

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/288548.html

(0)
上一篇 2022年9月10日
下一篇 2022年9月10日

相关推荐

发表回复

登录后才能评论