gpt4 book ai didi

java - 从约束布局类外部将 View 膨胀为约束布局

转载 作者:行者123 更新时间:2023-11-29 23:27:59 25 4
gpt4 key购买 nike

我正在尝试将 View 膨胀到约束布局中。这不是 Activity 中的问题。但我也希望能够从另一个名为 getViews() 的类方法中调用它。如何访问约束布局来 inflatedView ?

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)构造函数添加布局:

    }

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 Activity 调用方法的地方

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);
}

我习惯于从 Activity 内部 inflatedView 。

最佳答案

所以这就是我修复它的方法。我必须在我的 inflate view 方法中创建一个名为 root view 的 View 。然后从我的 Activity 中调用 Root View 作为约束布局。

 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 方法来从 inflatedView 中填充我的 TextView

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

关于java - 从约束布局类外部将 View 膨胀为约束布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53206961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com