亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 Android 中的 XML 布局獲取視圖不起作用

從 Android 中的 XML 布局獲取視圖不起作用

慕無忌1623718 2021-12-01 19:25:42
我有一個關于如何從 Android 中的 XML 布局獲取視圖的問題?我正在使用微調器,它現在可以保存選定的微調器值。我想從 content_doa.xml 布局中獲取 ID 為 titleTextView 的 TextView 視圖。我試過使用 LayoutInflater 但它不起作用,它還沒有產生任何效果。你能幫我解決問題嗎?干得好:字體設置.javapublic class FontSettings extends AppCompatActivity {private Spinner spinner1, spinnerLatin;private SharedPreferences mMyPrefs;private SharedPreferences.Editor mMyEdit;@Overridepublic void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.settings_font);    // toolbar    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);    setSupportActionBar(toolbar);    getSupportActionBar().setDisplayHomeAsUpEnabled(true); //this line shows back button    //Display data size teks arab in dropdown list spinner    final Spinner spinnerBackgroundChange = (Spinner)findViewById(R.id.spinner1);    final LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);    final SharedPreferences sharedPref = getSharedPreferences("My_Prefs", 6);    ArrayAdapter<CharSequence> spinnerArrayAdapter = ArrayAdapter.createFromResource(this, R.array.country_arrays, android.R.layout.simple_spinner_item);    spinnerArrayAdapter.setDropDownViewResource(R.layout.textview_with_background);    spinnerBackgroundChange.setAdapter(spinnerArrayAdapter);    spinnerBackgroundChange.setSelection(sharedPref.getInt("VALUE", 6));
查看完整描述

2 回答

?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

好的,所以我現在知道了。您的資源中有一個數組列表,用于填充微調器。單擊該項目時,代碼將獲取該項目在數組列表中的位置,并將其設置在共享首選項中,然后在 ActivityContent.java 中進行訪問。


在 ActivityContent.java 中,您從共享首選項中獲得的價值是項目在數組列表中的位置。


首先只是為了幫助您學習,我將解釋您可以用它做什么。其次,我將解釋你打算做什么。


第一的

您在 arraylist 中有 item 的位置,因此您可以在 ActivityContent.java 類中使用它來做什么,請執行此操作。


活動內容.java


String[] stringArray = getResources().getStringArray(R.array.country_arrays)

SharedPreferences sp = getSharedPreferences("My_Prefs", Activity.MODE_PRIVATE); 

int sizeItemSelected= sp.getInt("VALUE", 24);


//if array contains strings if not just make this variable an Int

String sizeToSetTextViewSizeTo = stringArray[sizeItemSelected];

int tvSize = Integer.parseInt(sizeToSetTextViewSizeTo);



TextView titleTV = (TextView) findViewById(R.id.titleTextView);

titleTV.setTextSize(tvSize);

第二

您只需傳遞所選項目(您希望在活動內容中將 textview 設置為的大?。┒皇莻鬟f位置。


我認為您最初打算使用代碼做什么


case 1:

SharedPreferences.Editor editor1 = sharedPref.edit();

editor1.putInt("VALUE", spinnerBackgroundChange.getSelectedItem());                   

editor1.commit();

break;

而不是這個


case 1:

SharedPreferences.Editor editor1 = sharedPref.edit();

editor1.putInt("VALUE", spinnerBackgroundChange.getSelectedItemPosition());                   

editor1.commit();

break;

唯一的事情是我從來沒有見過這樣的案例:在它自己的內部


OnItemSelectedListender()

正如你所擁有的。但我不明白為什么這會影響代碼的第一個或第二個選項。


查看完整回答
反對 回復 2021-12-01
?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

更新了解決問題的鏈接 抱歉沒有代碼。我回家后可以添加幾行,但最好的選擇是第 3 行,這是您需要研究和玩的東西。


您不能直接與來自另一個活動的視圖交互。該活動布局并未膨脹,因此您最終只會出現空指針異常。你必須間接地這樣做。有 3 種方法可以立即做到這一點。


SharedPreferences 像您一樣在您的微調器的共享首選項中設置一個值。但是在您的 activitycontent.java 中,您可以獲取共享首選項并查看某個值是否位于某個鍵值對中。如果是這樣,則在 activitycontent.java 中將文本大小設置為該值。如果它為 null 或空,那么它將是您為它設置的 contentdoa.xml 值的值。這將是最簡單的,因為您不需要為數據庫編寫頂級代碼,也不必完全重新編寫整個應用程序

活動內容.java


將此添加到 onCreate


SharedPreferences sp = getSharedPreferences("My_Prefs", Activity.MODE_PRIVATE); 

 int titleTextSize = sp.getInt("VALUE", 24);

TextView titleTV = (TextView) findViewById(R.id.titleTextView);

titleTV.setTextSize(titleTextSize);

以編程方式設置 TextViewSize


看看那篇文章并通讀答案和評論。您還可以嘗試的另一件事是將 Id 添加到線性布局,然后先引用它,然后再引用類似的內容。


linearLayout.findViewById..... you know how the rest goes

創建一個 SQLite 數據庫并將您的值存儲在其中。對于您的所有修改以及在每個活動中可以更改的任何內容,您都有該視圖活動檢查是否設置了值,如果設置了視圖 textSize 為該值。我會推薦更多,因為你有很多可以改變的東西。

我更推薦的是研究并使用它進行應用程序設置。 應用程序設置的默認 SharedPrefences


查看完整回答
反對 回復 2021-12-01
  • 2 回答
  • 0 關注
  • 195 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號