天天看點

Activity跳轉和資料傳遞學習

跳轉

1.顯示跳轉

4種方法:

public class AActivity extends AppCompatActivity {

    private Button ma;

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

        ma=findViewById(R.id.btn_a);
        ma.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                //顯式方法1
                Intent intent=new Intent(AActivity.this,BActivity.class);
                startActivity(intent);        

                /*顯式跳轉方法2
                 Intent intent=new Intent();
                intent.setClass(AActivity.this,BActivity.class);
                startActivity(intent);
                 */

                /*顯式跳轉方法3
                Intent intent=new Intent();
                intent.setClassName(AActivity.this,"com.example.textview.jump.BActivity");
                startActivity(intent);
                 */

                /*顯式跳轉方法4
                Intent intent=new Intent();
                intent.setComponent(new ComponentName(AActivity.this,"com.example.textview.jump.BActivity"));
                startActivity(intent);
                 */

            }
        });
    }
}

           

資料傳遞

AActivity點選跳轉後發送資料

AActivity.java

package com.example.textview.jump;

import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

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

import com.example.textview.R;

public class AActivity extends AppCompatActivity {

    private Button ma;

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

        ma=findViewById(R.id.btn_a);
        ma.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                //顯式方法1
                Intent intent=new Intent(AActivity.this,BActivity.class);

                //數值傳遞
                Bundle bundle=new Bundle();
                bundle.putString("name","劉亦菲");//bundle裡放傳輸的資料
                bundle.putInt("number",28);
                intent.putExtras(bundle);//bundle通過intent傳過去
                startActivity(intent);
            }
        });
    }
}
           

BActivity接收資料

B的布局界面放一個TextView用來顯式傳輸來的檔案

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:padding="10dp"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="25dp"
        android:textColor="#F08080"
        android:id="@+id/text_1"/>

</LinearLayout>
           

BActivity.java

package com.example.textview.jump;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

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

import com.example.textview.R;

public class BActivity extends AppCompatActivity {

    private TextView mTV;

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

        mTV=findViewById(R.id.text_1);
        Bundle bundle=getIntent().getExtras();
        String name=bundle.getString("name");
        int number=bundle.getInt("number");
        mTV.setText(name+","+number);
    }
}
           

結果:A跳轉到B傳遞的資料顯示

Activity跳轉和資料傳遞學習

startActivityForResul

界面1跳轉到界面2,界面2将得到的資料又轉到界面1.

AActivity.java

package com.example.textview.jump;

import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import com.example.textview.R;

public class AActivity extends AppCompatActivity {

    private Button ma;

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

        ma=findViewById(R.id.btn_a);
        ma.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //顯式方法1
                Intent intent=new Intent(AActivity.this,BActivity.class);
                //數值傳遞
                Bundle bundle=new Bundle();
                bundle.putString("name","劉亦菲");//bundle裡放傳輸的資料
                bundle.putInt("number",28);
                intent.putExtras(bundle);//bundle通過intent傳過去
               // startActivity(intent);
                startActivityForResult(intent,0);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Toast.makeText(this, data.getExtras().getString("title"), Toast.LENGTH_SHORT).show();
    }
}
           

BActivity.java

package com.example.textview.jump;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import com.example.textview.R;

public class BActivity extends AppCompatActivity {

    private TextView mTV;
    private Button mab;

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

        mTV=findViewById(R.id.text_1);
        mab=findViewById(R.id.ab_1);
        Bundle bundle=getIntent().getExtras();
        String name=bundle.getString("name");
        int number=bundle.getInt("number");
        mTV.setText(name+","+number);

        mab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent();
                Bundle bundle1=new Bundle();
                bundle1.putString("title","寶寶回啦了");
                intent.putExtras(bundle1);
                setResult(Activity.RESULT_OK,intent);
                finish();
            }
        });
    }
}
           

結果:A跳轉到B,B傳回A彈出Toast

Activity跳轉和資料傳遞學習

繼續閱讀