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

У меня есть оверлей на экране, который показывает несколько кнопок для управления этой функцией.Это наложение будет иметь динамический список кнопок, которые будут созданы на основе количества шагов.Пример, если шаги 3, тогда будет создана кнопка 3Я создал LinearLayout внутри этой кнопки будут созданы.Я создал метод, который установит все атрибуты кнопки, но каким-то образом он дает мне исключение нулевого указателя.

В onCreateView я инициализировал buttonArray.

Вот мой фрагмент:

  public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            mContext = getActivity();
            gc =  GlobalClass.getInstance(mContext);
            db =  DataBaseHelper.getInstance(mContext);
           sectionButtons = new Button[3];
            /*if(savedInstanceState!=null)
                mVisible = savedInstanceState.getBoolean("visible",false);*/

            manager = SharedPreferenceManager.getInstance(mContext);

            //check wether to play video in cover mode or another mode

              inflater.inflate(R.layout.fragment_video_side_by_side, container, false);

        }

и onViewCreated () Я вызываю мой метод addSections ():

// show overlay with buttons in onTouch
        parentLayout.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_DOWN) {
                    if (!mVisible) {
                        overLay.setVisibility(View.VISIBLE);
                        addSections(3);
                        mVisible = true;
                    } else {
                        overLay.setVisibility(View.GONE);
                        mVisible = false;

                    }


                }
                return true;
            }
        });

Метод:

 public void addSections(int numOfSection){
        if(numOfSection==0)
            return;
        else {

            for (int i = 0; i < numOfSection; i++) {
                //set the properties for button

                sectionButtons[i].setLayoutParams(new LinearLayout.LayoutParams(50, 50));
                sectionButtons[i].setBackgroundResource(R.drawable.round_button);
                sectionButtons[i].setText("Section "+i+"");
                sectionButtons[i].setId(i);

                //add button to the layout
                mSectionLayout.addView(sectionButtons[i]);
            }
        }
    }

mSectionLayout - мой родительский LinearLayout.Во время отладки я обнаружил, что мой sectionButtons не показывает ноль, но при установке атрибутов выдает исключение nullPointer.

1 Ответ

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

Создание динамических кнопок и прикрепление с помощью макета

Вы можете легко создать динамическую кнопку следующим образом:

public class MainActivity extends Activity {

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);

            LinearLayout layout = (LinearLayout) findViewById(R.id.layout);
                TextView textView = new TextView(this);
                textView.setText("Text View ");
                LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(
                        LinearLayout.LayoutParams.FILL_PARENT,
                        LinearLayout.LayoutParams.WRAP_CONTENT
                );
                layout.addView(textView, p);

                Button buttonView = new Button(this);
                buttonView.setText("Button");
                buttonView.setOnClickListener(mThisButtonListener);
                layout.addView(buttonView, p);

        }
        private OnClickListener mThisButtonListener = new OnClickListener() {
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "Hello !",
                        Toast.LENGTH_LONG).show();
            }
        };
    }

Используя этот код, вы легкосформировать список кнопок на макете.Счастливое кодирование

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...