多個Activity之間的相互轉換

 這一篇我們要講的內容主要是Activity的創建以及多個Activity之間的調用和數據的攜帶與返回,相信讀者們耐心且用心的讀完這篇文章一定能學到一些知識,加深對Activity的瞭解和掌握。


1.Activity的創建:

   步驟如下:

(1)在src下的包中新建一個類繼承Activity類(java文件)

(2)重寫onCreate方法

(3)創建與這個Activity對應的xml文件

(4)在繼承Activity的類中通過setContentView()加載試圖(上一步創建的xml文件)

(5)在AndroidManifest.xml文件中註冊


2.Activity之間的跳轉:

使用Activity實現不同Activity的跳轉

* 1 創建一個新的Activity(略過)

* 2 創建Intend對象,是四個基本組件的橋樑

* 3 啓動Activity的方法 startActivity

* 4 給按鈕添加監聽,實現跳轉

*   (1)聲明一個Button,同時在主xml文件中添加一個Button

*   (2)通過findViewById方法引入這個Button

*   (3)通過setOnClickListener的匿名內部類來添加監聽

   具體代碼如下(未列出的代碼在工程創建後由系統自動生成):

(1)創建的新的Activity的java文件Act2.java

1
2
3
4
5
6
7
8
9
10
11
12
package com.example.newactivity;
import android.app.Activity;
import android.os.Bundle;
public class Act2 extends Activity{
    //重寫onCreate方法
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //加載試圖
        setContentView(R.layout.act2);
    }
}

(2)在主配置文件AndroidManifest.java文件中注意一定千萬不要忘記對新建的Activity進行註冊:

1
2
</activity>
      <activity android:name="Act2"></activity>

(3)main_Activity.xml文件中添加一個用於跳轉的Button:

1
2
3
4
5
<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="跳轉" />

(4)在MainActivity.java文件中實現跳轉的主要功能代碼:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package com.example.newactivity;
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 btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //引入對應id號的Button
        btn=(Button)findViewById(R.id.button);
        //給Button創建監聽
        btn.setOnClickListener(new OnClickListener() {
                                                                                                                                                                                                                     
            @Override
            public void onClick(View arg0) {
                //創建Intent對象來實現Activity的跳轉
                Intent i=new Intent(MainActivity.this,Act2.class);
                //調用startActivity方法啓動新的Activity
                startActivity(i);
            }
        });
    }
                                                                                                                                                                                                             
}

   到這裏我們就可以運行結果看一下了:



3.Activity之間的數據攜帶

   這裏我們只拿出java文件,其他文件不寫了,代碼如下:

(1)MainActivity.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.example.startactivity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
                                                                                                                                       
            @Override
            public void onClick(View arg0) {
                Intent i=new Intent(MainActivity.this,Act2.class);
                i.putExtra("data""謝謝你把我攜帶到這裏");
                startActivity(i);
            }
        });
    }
}

(2)Act2.java

1
2
3
4
5
6
7
8
9
10
11
12
package com.example.startactivity;
import android.app.Activity;
import android.os.Bundle;
public class Act2 extends Activity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.act2);
        String strInfo=getIntent().getStringExtra("data");
        System.out.println("Act2--"+strInfo);
    }
}

(3)注意不要忘了Activity的註冊!

   運行結果如下:



4.Activity之間的數據返回:

   基於前面的數據攜帶,我們接下來講一下數據的返回,這一點主要應用於註冊或者登陸界面,當跳轉到下一個頁面時可能需要返回給前一個頁面一些值,實現的代碼如下:

   

(1)MainActivity.java文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package com.example.startactivityforresult;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
                                                                    
            @Override
            public void onClick(View arg0) {
                Intent i=new Intent(MainActivity.this,Act2.class);
                startActivityForResult(i, 1);
            }
        });
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
        case 1:
            System.out.println(data.getStringExtra("data"));
            break;
        default:
            System.out.println("返回錯誤");
            break;
        }
    }
                                                            
}

(2)Act2.java文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.example.startactivityforresult;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
public class Act2 extends Activity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.act2);
        findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
                                                                 
            @Override
            public void onClick(View v) {
                Intent i=new Intent(Act2.this,MainActivity.class);
                i.putExtra("data""我是返回主界面的信息");
                setResult(1, i);
                finish();
            }
        });
    }
}

(3)運行結果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章