Получить представление из XML-макета в Android Не работает - PullRequest
0 голосов
/ 23 октября 2018

У меня проблема с тем, как получить представление из макета XML в Android?Я использую счетчик, он может сохранить значение выбранного счетчика прямо сейчас.Я хочу получить представление TextView с идентификатором titleTextView из макета content_doa.xml.Я пытался использовать LayoutInflater, но он не работает, пока не дает никакого эффекта.Вы можете помочь моей проблеме?

Вот, пожалуйста:

FontSettings.java

public class FontSettings extends AppCompatActivity {

private Spinner spinner1, spinnerLatin;
private SharedPreferences mMyPrefs;
private SharedPreferences.Editor mMyEdit;

@Override
public 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));

    //Save spinner value
    spinnerBackgroundChange.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

            ((TextView) view).setTextColor(Color.parseColor("#226169"));

            switch(position) {
                case 0:
                    SharedPreferences.Editor editor0 = sharedPref.edit();
                    editor0.putInt("VALUE", spinnerBackgroundChange.getSelectedItemPosition());
                    editor0.commit();

                    Activity activity = (Activity) parent.getContext();
                    TextView dgs = (TextView) activity.findViewById(R.id.tekzArab);
                    dgs.setTextSize(12);
                    break;

                case 1:
                    SharedPreferences.Editor editor1 = sharedPref.edit();
                    editor1.putInt("VALUE", spinnerBackgroundChange.getSelectedItemPosition());
                    editor1.commit();

                    Activity activitys = (Activity) parent.getContext();
                    TextView dgf = (TextView) activitys.findViewById(R.id.tekzArab);
                    dgf.setTextSize(14);

                    View contentView = inflater.inflate(R.layout.content_doa, null,false);
                    TextView titleMessage = (TextView) contentView.findViewById(R.id.titleTextView);
                    titleMessage.setTextSize(14);
                    break;

                case 2:
                    SharedPreferences.Editor editor2 = sharedPref.edit();
                    editor2.putInt("VALUE", spinnerBackgroundChange.getSelectedItemPosition());
                    editor2.commit();

                    Activity activityz = (Activity) parent.getContext();
                    TextView dgy = (TextView) activityz.findViewById(R.id.tekzArab);
                    dgy.setTextSize(16);
                    break;

                case 3:
                    SharedPreferences.Editor editor3 = sharedPref.edit();
                    editor3.putInt("VALUE", spinnerBackgroundChange.getSelectedItemPosition());
                    editor3.commit();

                    Activity activitye = (Activity) parent.getContext();
                    TextView dgq = (TextView) activitye.findViewById(R.id.tekzArab);
                    dgq.setTextSize(18);
                    break;

                case 4:
                    SharedPreferences.Editor editor4 = sharedPref.edit();
                    editor4.putInt("VALUE", spinnerBackgroundChange.getSelectedItemPosition());
                    editor4.commit();

                    Activity activityq = (Activity) parent.getContext();
                    TextView dgp = (TextView) activityq.findViewById(R.id.tekzArab);
                    dgp.setTextSize(20);
                    break;

                case 5:
                    SharedPreferences.Editor editor5 = sharedPref.edit();
                    editor5.putInt("VALUE", spinnerBackgroundChange.getSelectedItemPosition());
                    editor5.commit();

                    Activity activityc = (Activity) parent.getContext();
                    TextView dgn = (TextView) activityc.findViewById(R.id.tekzArab);
                    dgn.setTextSize(22);
                    break;

                case 6:
                    SharedPreferences.Editor editor6 = sharedPref.edit();
                    editor6.putInt("VALUE", spinnerBackgroundChange.getSelectedItemPosition());
                    editor6.commit();

                    Activity activitym = (Activity) parent.getContext();
                    TextView dgb = (TextView) activitym.findViewById(R.id.tekzArab);
                    dgb.setTextSize(24);
                    break;

                case 7:
                    SharedPreferences.Editor editor7 = sharedPref.edit();
                    editor7.putInt("VALUE", spinnerBackgroundChange.getSelectedItemPosition());
                    editor7.commit();

                    Activity activityo = (Activity) parent.getContext();
                    TextView dgl = (TextView) activityo.findViewById(R.id.tekzArab);
                    dgl.setTextSize(26);
                    break;

                default:
                    Activity activityu = (Activity) parent.getContext();
                    TextView dgx = (TextView) activityu.findViewById(R.id.tekzArab);
                    dgx.setTextSize(24);
                    break;

            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });


    //Display data size teks latin in dropdown list spinner
    Spinner spinnerLatin = (Spinner)findViewById(R.id.spinnerLatin);
    ArrayAdapter<CharSequence> spinnerArrayLatin = ArrayAdapter.createFromResource(this, R.array.country_arrays, android.R.layout.simple_spinner_item);
    spinnerArrayLatin.setDropDownViewResource(R.layout.textview_with_background);
    spinnerLatin.setAdapter(spinnerArrayLatin);
    // spinnerLatin default value
    spinnerLatin.setSelection(1);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            this.finish();
            return true;
    }
    return super.onOptionsItemSelected(item);
} }

settings_font.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:gravity="center_vertical"
android:minHeight="?android:attr/listPreferredItemHeight"
android:orientation="vertical">

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="#226169"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:layout_collapseMode="pin"
    app:popupTheme="@style/AppTheme.PopupOverlay" />

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <!-- Font Arab -->
        <!-- Judul -->
        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/reldoa"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginTop="3dp"
            android:background="@android:color/white"
            android:orientation="vertical">

            <TextView
                android:id="@+id/fontArab"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:paddingBottom="15dp"
                android:paddingLeft="15dp"
                android:paddingTop="15dp"
                android:text="Font Arab"
                android:textColor="#226169"
                android:textSize="20sp" />

        </RelativeLayout>

        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/reldoa"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginTop="3dp"
            android:background="@android:color/white"
            android:orientation="vertical">

            <TextView
                android:id="@+id/tekzArab"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:paddingBottom="20dp"
                android:paddingRight="10dp"
                android:paddingTop="20dp"
                android:text="أسْتَغْفِرُ اللهَ العَظِيمَ"
                android:textColor="#222222" />

        </RelativeLayout>


        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/reldoa"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="3dp"
    android:background="@android:color/white"
    android:orientation="vertical">

            <TextView
                android:id="@+id/sizedoa"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:paddingBottom="10dp"
                android:paddingLeft="15dp"
                android:paddingTop="5dp"
                android:text="Ukuran Font"
                android:textColor="#222222"
                android:textSize="18sp" />

    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true" />

</RelativeLayout>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/reldoa"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="3dp"
    android:background="@android:color/white"
    android:orientation="vertical">

    <TextView
        android:id="@+id/sizelatin"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:paddingBottom="10dp"
        android:paddingLeft="15dp"
        android:paddingTop="5dp"
        android:text="Jenis Font"
        android:textColor="#222222"
        android:textSize="18sp" />

    <Spinner
        android:id="@+id/spinner2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:entries="@array/type_arrays"
        android:prompt="@string/type_font"/>

</RelativeLayout>

        <!-- Font latin -->

        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/relLatin"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginTop="45dp"
            android:background="@android:color/white"
            android:orientation="vertical">

            <TextView
                android:id="@+id/fontLatin"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:paddingBottom="15dp"
                android:paddingLeft="15dp"
                android:paddingTop="15dp"
                android:text="Font Latin"
                android:textColor="#226169"
                android:textSize="20sp" />

        </RelativeLayout>

        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/reldoa"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginTop="3dp"
            android:background="@android:color/white"
            android:orientation="vertical">

            <TextView
                android:id="@+id/tekzLatin"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:paddingBottom="20dp"
                android:paddingRight="10dp"
                android:paddingLeft="15dp"
                android:paddingTop="20dp"
                android:text="Aku meminta ampunan kepada Allahَ"
                android:textColor="#222222" />

        </RelativeLayout>


        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/relLatin"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginTop="3dp"
            android:background="@android:color/white"
            android:orientation="vertical">

            <TextView
                android:id="@+id/sizeLatin"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:paddingBottom="10dp"
                android:paddingLeft="15dp"
                android:paddingTop="5dp"
                android:text="Ukuran Font"
                android:textColor="#222222"
                android:textSize="18sp" />

            <Spinner
                android:id="@+id/spinnerLatin"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:entries="@array/country_arrays"
                android:prompt="@string/country_prompt" />

        </RelativeLayout>

        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/reldoa"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginTop="3dp"
            android:background="@android:color/white"
            android:orientation="vertical">

            <TextView
                android:id="@+id/tipeLatin"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:paddingBottom="10dp"
                android:paddingLeft="15dp"
                android:paddingTop="5dp"
                android:text="Jenis Font"
                android:textColor="#222222"
                android:textSize="18sp" />

            <Spinner
                android:id="@+id/spinnerTipe"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:entries="@array/type_arrays"
                android:prompt="@string/type_font"/>

        </RelativeLayout>

    </LinearLayout>
</ScrollView>

content_doa.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/coordinatorLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?attr/colorButtonNormal">

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="5dp"
    android:orientation="vertical"
    android:padding="5dp"
    android:background="?attr/colorButtonNormal">

    <!-- TextView Nama Mahasiwa -->
    <TextView
        android:id="@+id/titleTextView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/white"
        android:lineSpacingExtra="15sp"
        android:paddingBottom="16dp"
        android:paddingLeft="16dp"
        android:paddingRight="16dp"
        android:paddingTop="16dp"
        android:textColor="#222222"
        android:textSize="24sp" />

    <TextView
        android:id="@+id/readmore"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/white"
        android:lineSpacingExtra="15sp"
        android:paddingBottom="16dp"
        android:paddingLeft="16dp"
        android:paddingRight="16dp"
        android:paddingTop="16dp"
        android:text="Baca selengkapnya"
        android:textColor="#000ecc"
        android:textSize="14sp" />

    <TextView
        android:id="@+id/latinDoa"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/white"
        android:lineSpacingExtra="8sp"
        android:paddingBottom="16dp"
        android:paddingLeft="16dp"
        android:paddingRight="16dp"
        android:paddingTop="16dp"
        android:textColor="@android:color/holo_green_dark"
        android:textStyle="italic" />

    <TextView
        android:id="@+id/artiDoa"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/white"
        android:lineSpacingExtra="8sp"
        android:paddingBottom="16dp"
        android:paddingLeft="16dp"
        android:paddingRight="16dp"
        android:paddingTop="16dp"
        android:textColor="#222222" />

    <TextView
        android:id="@+id/sumberDoa"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/white"
        android:lineSpacingExtra="8sp"
        android:paddingBottom="16dp"
        android:paddingLeft="16dp"
        android:paddingRight="16dp"
        android:paddingTop="16dp"
        android:textColor="#222222" />

    <TextView
        android:id="@+id/readless"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/white"
        android:lineSpacingExtra="15sp"
        android:paddingBottom="16dp"
        android:paddingLeft="16dp"
        android:paddingRight="16dp"
        android:paddingTop="16dp"
        android:text="Baca lebih sedikit"
        android:textColor="#000ecc"
        android:textSize="14sp" />

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/relmasjid"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="3dp"
        android:background="@android:color/white"
        android:orientation="horizontal">

        <Button
            android:id="@+id/buttonbaca"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true" />

        <Button
            android:id="@+id/buttoncopy"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text="Salin" />

        <Button
            android:id="@+id/buttonshare"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:actionProviderClass="android.widget.ShareActionProvider"
            android:text="Bagikan" />

    </RelativeLayout>

</LinearLayout>

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Хорошо, теперь я понял.У вас есть arraylist в ваших ресурсах, которыми вы заполняете свой счетчик.при щелчке по элементу код получит положение этого элемента в списке массивов и установит его в общих настройках для последующего доступа в ActivityContent.java.

В ActivityContent.java ваше значение, полученное вами изОбщие предпочтения - это позиция элемента в списке.

Сначала, чтобы помочь вам научиться, я объясню, что вы можете сделать с этим.Затем, во-вторых, я объясню, что вы намеревались сделать.

Первый

У вас есть позиция элемента в arraylist, так что вы можете сделать с этим в вашем классе ActivityContent.java, сделайтеthis.

ActivityContent.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);

Секунда

Вы просто передаете выбранный элемент (размер, для которого вы хотите установить текстовое представление вдеятельности) вместо прохождения позиции.

То, что, я думаю, вы намеревались сделать с кода в первую очередь

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()

, как у вас есть.Но я не понимаю, почему это повлияет на первый или второй варианты кода.

0 голосов
/ 23 октября 2018

ОБНОВЛЕН со ссылкой на решенный вопрос Извините за отсутствие кода.Я могу добавить несколько строк, когда вернусь домой, но лучший вариант - номер 3, и это то, что вам нужно исследовать и играть.

Вы не можете напрямую взаимодействовать с представлениями из другого занятия.Этот макет действий не завышен, так что вы просто получите исключения с нулевым указателем.Вы должны сделать это косвенно.Есть 3 способа сделать это прямо из головы.

  1. SharedPreferences Установите значение в общих настройках вашего блесна, как и вы.Но в вашем activitycontent.java у вас есть общие настройки и посмотрите, находится ли значение в определенной паре ключ-значение.Если так, то в файле actioncontent.java он устанавливает размер текста в это значение.Если оно пустое или пустое, то это будет значение, которое вы установили для него значением contentdoa.xml.Это было бы проще, поскольку у вас не было бы лучшего кода для записи в базу данных, и вам не пришлось бы полностью переписывать все ваше приложение

Activitycontent.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 программно

Посмотрите на этот пост и прочитайте ответы и комментарии.Еще одна вещь, которую вы можете попробовать, это добавить I к линейному макету, а затем ссылаться на него, а затем что-то вроде.

linearLayout.findViewById..... you know how the rest goes
Создайте базу данных SQLite и сохраните в ней ваши значения.Для всех ваших модификаций и всего, что может быть изменено в каждом действии, у вас есть это действие просмотра, проверьте, установлено ли значение, если это так, установите представления textSize в это значение.Это я бы порекомендовал больше, поскольку у вас есть так много вещей, которые вы можете изменить. Я бы порекомендовал еще больше изучить и поработать с этим в настройках вашего приложения. Настройки SharedPrefences по умолчанию для приложений
...