片段内的按钮
Button inside a Fragment
您好,我正在创建一个在 Fragment
中使用 Button
的应用程序,因此当我单击 Button
时,Butto
n 将创建一个Toast 文本,我改用 Button
点击监听器。但问题是我的 Button
没有响应点击,当我点击它时 Button
没有响应所以我感到压力很大。这是我的主要问题代码:
test = (Button) findViewById(R.id.button2);
t_layout = (TabLayout) findViewById(R.id.tabs);
t_layout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
Fragment fragment;
String contain = tab.getText().toString();
if(contain.equals("POWER")){
fragment = new power_fragment();
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.fragment2, fragment);
ft.commit();
test.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(),"Test on",Toast.LENGTH_SHORT).show();
}
}
}
}
});
我正在使用 Tabitem,因此当我单击 "POWER" 的 Tabitem 时,Fragment
将更改为包含测试 Button
的 power_fragment 布局。但是测试Button
即使点击也无法制作Toast文字
初始化 power_fragment 中的 test
按钮,并在 power_fragment 中写入 OnClickListener
,就像您将 test
按钮放入 power_fragment 中一样布局
将以下代码放入您的 power_fragment
View view = inflater.inflate(R.layout.power_fragment, container, false);
Button test = (Button) view.findViewById(R.id.test);
test.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
}
});
在您的片段中 class
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_my_blood_group_requests, container, false);
btn = (Button) v.findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//make your toast here
}
});
return v;
}
您不能在片段中使用 findViewById。你需要做这样的事情。
test = (Button) primaryView.findViewById(R.id.button2);
test.setOnClickListener(this);
// 这个 primaryView 是你在 onCreateView 上 returns 的容器视图;
return primaryView;
/// 片段应该实现 View.OnClickListener
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.test:
}
}
您好,我正在创建一个在 Fragment
中使用 Button
的应用程序,因此当我单击 Button
时,Butto
n 将创建一个Toast 文本,我改用 Button
点击监听器。但问题是我的 Button
没有响应点击,当我点击它时 Button
没有响应所以我感到压力很大。这是我的主要问题代码:
test = (Button) findViewById(R.id.button2);
t_layout = (TabLayout) findViewById(R.id.tabs);
t_layout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
Fragment fragment;
String contain = tab.getText().toString();
if(contain.equals("POWER")){
fragment = new power_fragment();
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.fragment2, fragment);
ft.commit();
test.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(),"Test on",Toast.LENGTH_SHORT).show();
}
}
}
}
});
我正在使用 Tabitem,因此当我单击 "POWER" 的 Tabitem 时,Fragment
将更改为包含测试 Button
的 power_fragment 布局。但是测试Button
即使点击也无法制作Toast文字
初始化 power_fragment 中的 test
按钮,并在 power_fragment 中写入 OnClickListener
,就像您将 test
按钮放入 power_fragment 中一样布局
将以下代码放入您的 power_fragment
View view = inflater.inflate(R.layout.power_fragment, container, false);
Button test = (Button) view.findViewById(R.id.test);
test.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
}
});
在您的片段中 class
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_my_blood_group_requests, container, false);
btn = (Button) v.findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//make your toast here
}
});
return v;
}
您不能在片段中使用 findViewById。你需要做这样的事情。
test = (Button) primaryView.findViewById(R.id.button2);
test.setOnClickListener(this);
// 这个 primaryView 是你在 onCreateView 上 returns 的容器视图;
return primaryView;
/// 片段应该实现 View.OnClickListener
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.test:
}
}