如何将点击监听器绑定到Android中通过充气器从另一个活动添加的按钮
我一直在尝试将click listener添加到我在某个活动中创建的按钮,但布局已通过Inflater添加到另一个活动中,但该按钮未接收到以下事件:我的代码 XML布局如何将点击监听器绑定到Android中通过充气器从另一个活动添加的按钮,android,events,Android,Events,我一直在尝试将click listener添加到我在某个活动中创建的按钮,但布局已通过Inflater添加到另一个活动中,但该按钮未接收到以下事件:我的代码 XML布局 <Button android:layout_width="wrap_content" android:layout_height="25dp" android:layout_alignParentRight="true"
<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"/>
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);
}
}
主活动中的“编辑配置文件”按钮拒绝接受单击侦听器
在MainActivity
中扩展BaseActivity
的本质是因为BaseActivity
包含一些大多数活动都将继承的基本功能
使用BaseActivity
的initAddLayout
方法从BaseActivity
加载MainActivity
的布局
任何帮助都将不胜感激。您可以通过以下方式实现:
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);
}
}
main活动
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");
}
}
}
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);
}
...
}
view()
在做什么?请检查更新。我已经删除了view()
我在试图让它工作时使用了它。请说明如何保护视图配置文件ActivityView代码>获取initialized@GhostWorker它已在initAddLayout
Thank you@Sagar中初始化,但单击侦听器仍不工作此显示错误无法解析方法第二个参数应为视图group@GhostWorker我已经更新了代码。你能再试一次吗?签出initAddLayout