Раздувание представления до макета ограничений из-за пределов класса макетов ограничений

Я пытаюсь раздуть представление в макет ограничения. Что не является проблемой из-за активности. Но я также хочу иметь возможность вызывать его из другого метода классов с именем getViews(). Как я могу получить доступ к макету ограничения, чтобы раздуть представление?

public class chromecastUI_inflater {
    Button btn, btn1, fastforward, rewind, play, pause;
    TextView title, user, discription, date, streamviews, chromeconnection;
    ConstraintLayout constraintLayout1;
    Selector selector = new Selector();
    Context c;

    public chromecastUI_inflater() {

Редактировать

Я также попытался добавить макет через публичный конструктор:

    }

    public void getViews(View view) {

        play = view.findViewById(R.id.play);
        pause = view.findViewById(R.id.pause_button);
        fastforward = view.findViewById(R.id.fastforward_button);
        rewind = view.findViewById(R.id.rewind_button);
        btn1 = view.findViewById(R.id.cast_connection_button);
        btn = view.findViewById(R.id.cast_connection_button3);
        chromeconnection = view.findViewById(R.id.tvcast);

        //here is my problem layout

Редактировать

Здесь я попытался добавить

view.findViewById

        constraintLayout1 = findViewById(R.id.localplayerview);


        title = view.findViewById(R.id.title_text_view);
        discription = view.findViewById(R.id.discription_text_view);
        date = view.findViewById(R.id.date_text_view);
        streamviews = view.findViewById(R.id.views_text_view);
        user = view.findViewById(R.id.uploadedby_text_view);

        constraintLayout1.addView(view);
    }

    public void inflateViews() {
        LayoutInflater inflater = (LayoutInflater) c.getApplicationContext().getSystemService
                (Context.LAYOUT_INFLATER_SERVICE);
        View view = inflater.inflate(R.layout.layout, null);
        getViews(view);
    }

    public void setUI() {

        title.setText(selector.DOCTITLE);
        discription.setText(selector.ABOUT);
        date.setText(selector.DATE);
        streamviews.setText(selector.VIEWS);
        user.setText(selector.USER);
    }

    public void resetUI() {

        title.setText("");
        discription.setText("");
        date.setText("");
        streamviews.setText("");
        user.setText("");
    }

    public void Chromecast_Connected() {
        chromeconnection.setText("Chromecast is connected");
        btn.setVisibility(View.VISIBLE);
        btn1.setVisibility(View.GONE);
    }

    public void Chromecast_Disconnected() {
        chromeconnection.setText("Chromecast is connected");
        btn.setVisibility(View.GONE);
        btn1.setVisibility(View.VISIBLE);
    }
}

Здесь я хочу вызвать метод из моей активности local_player

chromecastUI_inflater chromecastUiInflater = new chromecastUI_inflater();

@Override
public void onChromecastConnecting() {
    Log.d(getClass().getSimpleName(), "onChromecastConnecting");
    chromecastUiInflater.inflateViews();
}

@Override
public void onChromecastConnected(ChromecastYouTubePlayerContext chromecastYouTubePlayerContext) {
    Log.d(getClass().getSimpleName(), "onChromecastConnected");
    chromecastUiInflater.setUI();
    chromecastUiInflater.Chromecast_Connected();
    initializeCastPlayer(chromecastYouTubePlayerContext);
}

Я привык раздувать представления внутри активности.


person markharrop    schedule 08.11.2018    source источник


Ответы (1)


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

 public void inflateViews(View rootview,Context c){
    constraintLayout1 = rootview.findViewById(R.id.localplayerview);
    LayoutInflater inflater = (LayoutInflater)c.getSystemService
            (Context.LAYOUT_INFLATER_SERVICE);
     view = inflater.inflate(R.layout.layout,null);
    getViews(view);

}

затем мне пришлось создать метод getStrings для заполнения моих текстовых представлений из завышенного представления.

public void getStrings_fromLocalPlayer(String title,String synopsis, String user, String views, String date){
    doctitle = title;
    docsynopsis = synopsis;
    docuser = user;
    docviews = views;
    docdate = date;
}
person markharrop    schedule 08.11.2018