gpt4 book ai didi

android - 如何在 Android 中通过 Inflater 将点击监听器绑定(bind)到从另一个 Activity 添加的按钮

转载 作者:行者123 更新时间:2023-11-29 23:51:52 26 4
gpt4 key购买 nike

我一直在尝试将点击监听器添加到我在 Activity 中创建的按钮,但是布局是通过 Inflater 在另一个 Activity 中添加的,但是按钮没有收到下面的事件是我的代码

XML 布局

 <Button
android:layout_width="wrap_content"
android:layout_height="25dp"
android:layout_alignParentRight="true"
android:layout_marginEnd="8dp"
android:layout_marginTop="15dp"
android:background="@drawable/rounded_transparent_botton"
android:textAllCaps="false"
style="@style/transparentButton"
android:text="Edit Profile"
android:id="@+id/edit_profile"/>

主要 Activity

   public class MainActivity extends BaseActivity implements View.OnClickListener{      

Button edit_profile;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initAddLayout(R.layout.activity_profile);
setActivityTitle(R.string.profile_activity_title);


loadData();

FontChangeCrawler fontChanger = new FontChangeCrawler(getAssets(), "fonts/Merriweather-Bold.ttf");
fontChanger.replaceFonts((ViewGroup) this.findViewById(android.R.id.content));

this.edit_profile = findViewById(R.id.edit_profile);
this.edit_profile.setOnClickListener(this);
}

@Override
public void onClick(View view) {
if (view.getId()==R.id.edit_profile){
Log.i("TAG", "PROFILE CLICKED");
}
}
}

BaseActivity.class

public class BaseActivity extends AppCompatActivity {   

@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_base);
}

protected void initAddLayout(int layout) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(layout, null, false);
((FrameLayout) findViewById(R.id.main_content_below)).addView(view);

}
}

主 Activity 中的 edit_profile 按钮拒绝接受点击监听器。

MainActivity 中扩展 BaseActivity 的本质是因为 BaseActivity 包含大多数 Activity 将继承的一些基本功能

MainActivity 的布局是使用 BaseActivityinitAddLayout 方法从 BaseActivity 加载的

我们将不胜感激。

最佳答案

您可以按如下方式实现:

public class BaseActivity extends AppCompatActivity {   
protected View profileActivityView;
...
protected void initAddLayout(int layout) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

final FrameLayout frameLayout = (FrameLayout)findViewById(R.id.main_content_below);
profileActivityView = inflater.inflate(layout, frameLayout , false);
frameLayout.addView(profileActivityView);

}
}

主 Activity

public class MainActivity extends BaseActivity implements View.OnClickListener{      

Button edit_profile;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initAddLayout(R.layout.activity_profile);
setActivityTitle(R.string.profile_activity_title);

...

this.edit_profile = profileActivityView.findViewById(R.id.edit_profile);
this.edit_profile.setOnClickListener(this);
}
...
}

关于android - 如何在 Android 中通过 Inflater 将点击监听器绑定(bind)到从另一个 Activity 添加的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50836437/

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