Android studio(建立、監聽器intent選單)

201812發表於2024-06-11

建立報錯connect run out 可以檢視這篇文章

1.自動建立

2.設定輸出日誌資訊

logt+tab鍵之後會為當前的類自動生成一個TAG常量

關於日誌過濾器

這時候在只有Log.v裡面的訊息,Log.d、i、w、e都沒有出現。

當輸入MainActivity的時候過濾到與其相關的

3.手動建立

選擇No Activity

新增以下程式碼,以免下載東西過慢

我是直接中斷,新增程式碼後再Sync一下

        //解決下載慢問題
        maven { url = uri("https://maven.aliyun.com/repository/public") }
        maven { url = uri("https://maven.aliyun.com/repository/google") }

建立後在app\src\main\java\com下面建立一個new->activity->Empty Activity

填入資訊,不要選擇Generate a Layout File(會自動給Activity建立一個對應的佈局檔案,會將FirstActivity設定為當前專案的主要活動)

在app\src\main\res下面建立一個layout目錄

在layout裡面建立一個layout Resource File檔案,名為first_layout

新增按鈕操作

載入佈局,回到FirstActivity中,onCreate中加入以下程式碼

setContentView中傳入佈局檔案的id

去到AndroidManifest.xml中進行註冊,並新增主活動

4.給按鈕增加監聽器

public class FirstActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //新增布局檔案的id
        setContentView(R.layout.first_layout);
        //使用Toast方法
        // 獲取按鈕例項
        Button button1 = findViewById(R.id.Button_1);
        //為按鈕註冊監聽器
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //Toast.LENGTH_SHORT用來設定顯示時長
                Toast.makeText(FirstActivity.this,"這是一個提示",Toast.LENGTH_SHORT).show();
            }
        });
    }
}

5.選單設定

在res裡面新建目錄 menu,在menu裡面新建main選單檔案

去到FirstActivity裡面編寫相關程式碼,這裡注意,新版as用switch會報錯,要修改成if語句(可以將游標移到switch中按ALT+Enter快捷鍵直接轉換成if語句)

//顯示選單
    public boolean onCreateOptionsMenu(Menu menu) {
        //獲取Inflater透過inflate方法建立選單
        getMenuInflater().inflate(R.menu.main,menu);
        //返回true表示允許顯示選單,false則選單無法顯示
        return true;
    }

    public boolean onOptionsItemSelected(MenuItem item) {
        //得到點選的選單的item 的id,給每個選單項加入邏輯處理
        int itemId = item.getItemId();
        if (itemId == R.id.add_item) {
            Toast.makeText(this, "點選了新增選單項", Toast.LENGTH_SHORT).show();
        } else if (itemId == R.id.remobe_item) {
            Toast.makeText(this, "點選了刪除選單項", Toast.LENGTH_SHORT).show();
        }
        return true;
    }

6.跳轉到其他主活動(顯式與隱式Intent)

6.1顯式Intent

先新建一個活動,要選擇Generate a Layout file,單不要選擇Laucher Activity(這個會將其變為主要活動)

在second_activity的layout檔案新增一個按鈕,去Android Manifest裡面看看是否註冊了該活動

實現在FirstActivity中點選按鈕,去到SecondActivity中

// 獲取按鈕例項
        Button button1 = findViewById(R.id.Button_1);
        //為按鈕註冊監聽器
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //Toast.LENGTH_SHORT用來設定顯示時長
//                Toast.makeText(FirstActivity.this,"這是一個提示",Toast.LENGTH_SHORT).show();
                //在FirstActivity的基礎上開啟SecondActivity
                Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
                startActivity(intent);
            }
        });

6.2隱式Intent

字串可以自定義,只要在manifest裡面的action字串相同即可。

//隱式intent
                Intent intent = new Intent("com.example.activitytest.ACTION_START");
                startActivity(intent);

在AndroidManifest裡面

<activity
            android:name=".SecondActivity"
            android:exported="false">
            <intent-filter>
                <action android:name="com.example.activitytest.ACTION_START"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>

透過隱式intent實現點選按鈕能夠開啟Android的另一個程式

//隱式實現點選按鈕,開啟Android另一個程式
                Intent intent = new Intent(Intent.ACTION_VIEW);
                //開啟百度
//                intent.setData(Uri.parse("http://www.baidu.com"));
                //去到撥號頁面
                intent.setData(Uri.parse("tel:10086"));
                startActivity(intent);

6.3透過intent傳遞資料

在FirstActivity按鈕監聽事件中

 //intent傳遞資料
                Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
                String data = "Intent傳遞資料到第二個活動";
                intent.putExtra("extra_data",data);
                startActivity(intent);

在SecondActivity中

//取出intent中傳來的資料
        Intent intent = getIntent();
        String data = intent.getStringExtra("extra_data");
        Log.d("SecondActivity",data);

啟動後點選第一個頁面按鈕後

相關文章