Android 跳转怎么做?(小白速成12 最终章)

我们之前使用as,主要是使用了activity_main.xml和MainActivity.java。现在我们对这个自动生成的主界面进行模仿。
而我们如果要自己绘制新的界面,需要满足下面几个条件:

  1. 继承Activity类
  2. 重写onCreate
  3. 在核心配置文件AndroidManifest.xml中配置信息

制作新的界面

首先新建一个xml布局文件,然后如下图,要特别注意:xml文件的名字必须 全部小写 ,大写字母会提示找不到。


<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World2!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

androidx.constraintlayout.widget.ConstraintLayout>

然后我们就可以在主布局文件中添加这个界面。

 <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".MyActivity"
            android:label="MyActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            intent-filter>

        activity>
        <activity android:name=".MainActivity">
    activity>
    application>
<intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            intent-filter>

其中这两句表示运行时默认调用该界面。

同样的,我们在java文件中这样调用:

package com.example.test_activity;

import android.app.Activity;
import android.os.Bundle;

import androidx.appcompat.app.AppCompatActivity;

public class MyActivity extends Activity {
     

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

运行之后,我们就可以看到
Android 跳转怎么做?(小白速成12 最终章)_第1张图片

快捷制作新的界面

直接在java文件上右键Android 跳转怎么做?(小白速成12 最终章)_第2张图片
然后选择我们需要的界面,直接生成。

界面跳转

如果要实现从系统默认的界面跳转到上述我们生成的界面,我们需要设置响应事件:

public void test(View view){
     
        Intent intent = new Intent();
        intent.setClass(this,MyActivity.class);
        this.startActivity(intent);
    }

setclass方法表示了我们申请从当前的界面,跳转到下一个界面。
而且,当我点击模拟器上的返回键时,界面会回到刚才的界面。
跳转的过程中,我们也可以利用Intent对象来传递一些参数。

public void test(View view){
     

        EditText editText =findViewById(R.id.editText);
        String uname =editText.getText().toString();

        Intent intent = new Intent();
        intent.setClass(this,MyActivity.class);

        intent.putExtra("uname",uname);
        this.startActivity(intent);
    }

这段代码就利用了intent传递了文本框中输入的内容
而在接收界面,我们可以这样写

protected void onCreate(Bundle savedInstanceState) {
     
        super.onCreate(savedInstanceState);
        setContentView(R.layout.myactivity);

        Intent intent=this.getIntent();
        String uname=intent.getStringExtra("uname");
        TextView textView =findViewById(R.id.textView2);
        textView.setText(uname);
    }

然后就能实现在第一个页面输入的内容,显示在第二个界面上。

界面内容切换

我们还可以在同样的界面上实现内容的切换,而不交换界面,但是我们不能通过返回键返回。(其实是页面的重绘)

this.setContentView(R.layout.myactivity);

在点击之后的响应方法中写上述代码,即可实现点击切换。

界面逆向传递信息ActivityForResult

我们通过这个可以实现类似于“点击按钮跳转到一个页面,选择数据,然后再返回”这样的交互功能。
代码如下:

package com.example.test_activity;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {
     

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

//        EditText editText =findViewById(R.id.editText);
//        String uname =editText.getText().toString();

        Intent intent = new Intent();
        intent.setClass(this,MyActivity.class);

//        intent.putExtra("uname",uname);
 //       this.startActivity(intent);
        //也可以传入附带标记位的intent
        this.startActivityForResult(intent,1);
       // this.setContentView(R.layout.myactivity);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
     
        String value=data.getStringExtra("msg");
        EditText editText =findViewById(R.id.editText);
        editText.setText(value);
    }
}

主函数如上,跳转界面如下

package com.example.test_activity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

public class MyActivity extends Activity {
     

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

//        Intent intent=this.getIntent();
//        String uname=intent.getStringExtra("uname");
//        TextView textView =findViewById(R.id.textView2);
//        textView.setText(uname);
    }
    public void test2(View view){
     
        //获取到文本框中写的内容,
        EditText editText =findViewById(R.id.editText2);
        String msg =editText.getText().toString();
        Intent intent =getIntent();
        intent.putExtra("msg",msg);
        this.setResult(3,intent);//第一个也是标记位,在这里随便写
        this.finish();

    }
}

我们就可以实现在跳转界面输入文字,然后点击返回,回到第一个页面,第二个页面输入的文字出现在第一个界面中。
Android 跳转怎么做?(小白速成12 最终章)_第3张图片
Android 跳转怎么做?(小白速成12 最终章)_第4张图片
Android 跳转怎么做?(小白速成12 最终章)_第5张图片
完结撒花!!!
参考自:尚学堂课

你可能感兴趣的:(android,android,安卓,java,移动开发,app)