我需要將一些敏感資料(例如 JOSN TOKEN)存盤到本地存盤中。我的應用程式將有多個活動,我想檢查每個活動的令牌有效性,我不想在所有活動上復制/粘貼相同的邏輯。無論如何,我是否可以擁有類似于基本活動的東西,它具有邏輯和所有其他活動都繼承自它?
目前我所有的活動都是這樣的......
public class MainActivity : AppCompatActivity
{
}
public class RegisterActivity : AppCompatActivity
{
}
public class ContentActivity : AppCompatActivity
{
}
我只是在尋找一種易于撰寫的邏輯,并讓所有活動都重復使用它。
uj5u.com熱心網友回復:
是的,您可以創建一個繼承自 class 的基類AppCompatActivity。
[Activity(Label = "BaseActivity")]
public class BaseActivity : AppCompatActivity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Create your application here
Preferences.Set("my_key", "123456");
}
protected override void OnResume()
{
base.OnResume();
var myValue = Preferences.Get("my_key", "default_value");
System.Diagnostics.Debug.WriteLine("-------------> value is: " myValue);
}
}
并使其他活動從 擴展BaseActivity ,例如:
[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
public class MainActivity : BaseActivity
{
Button button;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.activity_main);
}
}
更新
因此,如果我有一個選單,我需要在所有活動中共享它,那么基本布局是否也有任何概念?
如果你想為你的所有活動添加選單,你可以在 中添加你的選單BaseActivity ,請參考以下代碼:
1.create your menu ( mymenu.xml)in folder menuin your Resourcesfolder
<?xml version="1.0" encoding="utf-8" ?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@ id/item1"
android:title="Item 1"/>
<item android:id="@ id/item2"
android:title="Item 2"/>
<item android:id="@ id/item3"
android:title="Item 3"/>
</menu>
2.修改BaseActivity如下:
public class BaseActivity : AppCompatActivity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Create your application here
Preferences.Set("my_key", "123456");
}
public override bool OnCreateOptionsMenu(IMenu menu)
{
MenuInflater.Inflate(Resource.Menu.mymenu, menu);
return true;
}
public override bool OnOptionsItemSelected(IMenuItem item)
{
switch (item.ItemId)
{
case Resource.Id.item1:
//Do stuff for item1
System.Diagnostics.Debug.WriteLine("--------> select item1");
return true;
case Resource.Id.item2:
//Do stuff for item2
System.Diagnostics.Debug.WriteLine("--------> select item2");
return true;
case Resource.Id.item3:
//Do stuff for item3
System.Diagnostics.Debug.WriteLine("--------> select item3");
return true;
default:
return false;
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/412056.html
標籤:
