我的应用程序只有一个活动,因此我决定将主要内容放在一个片段中,因此我可以继续将抽屉与其他活动一起使用。但是我不能使按钮起作用:
Button profile= findViewById(R.id.button1);
profile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplication(),"Sürücüler",Toast.LENGTH_SHORT).show();
}
});
Button education= findViewById(R.id.button2);
education.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplication(),"Takımlar ve arabalar",Toast.LENGTH_SHORT).show();
}
});
Button health= findViewById(R.id.button3);
health.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplication(),"Pistler",Toast.LENGTH_SHORT).show();
}
});
Button goals= findViewById(R.id.button4);
goals.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplication(),"Sıralama",Toast.LENGTH_SHORT).show();
}
});
Button finance= findViewById(R.id.button5);
finance.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplication(),"Grand Prix Tarihi",Toast.LENGTH_SHORT).show();
}
});
Button comfort= findViewById(R.id.button6);
comfort.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplication(),"GP kart oyunu",Toast.LENGTH_SHORT).show();
}
});
如果我将此代码留在MainActivity上,则无法使用(因为尚未创建按钮?),但是当我将它们移入片段时,findViewById和getApplicationContext无法使用。如何使Toast消息与片段兼容,如何确保片段可以使用findviewbyid?
我是初学者,因此很简单,对此我感到抱歉。
任何帮助将不胜感激。
答案 0 :(得分:0)
根据您的评论,
If (Len(Trim(ws.Range("H3").Value)) = 0 Or Len(Trim(ws.Range("H4").Value)) = 0) Or _
(Len(Trim(ws.Range("H3").Value)) <> 0 And ws.Range("H3").Value < Date) Or _
(Len(Trim(ws.Range("H4").Value)) <> 0 And ws.Range("H4").Value < Date) Then
'~~> Show userform
employeeselection.Show
ElseIf (Len(Trim(ws.Range("H3").Value)) <> 0 And ws.Range("H3").Value = Date) Or _
(Len(Trim(ws.Range("H4").Value)) <> 0 And ws.Range("H4").Value = Date) Then
'~~> Hide shapes here
End If
实际上应该是:
return inflater.inflate(R.layout.fragment_home, container, false);
答案 1 :(得分:0)
如果片段XML中的按钮 您可以使用
Button profile= v.findViewById(R.id.button1);
所以v是您在“ onCreateView”方法中的片段视图
View v=inflater.inflate(R.layout.fragment_home, container, false);
以及方法的最后一个
return v;
答案 2 :(得分:0)
片段通常用作活动用户界面的一部分,并为活动贡献自己的布局。 因此,首先您需要为片段创建一个带有所有按钮的布局。
要提供我们为片段创建的布局,您必须在片段类中实现onCreateView()回调方法,当片段需要绘制布局时,Android系统会调用该方法。您对该方法的实现必须返回一个View,它是片段布局的根。
public class ExampleFragment extends Fragment {
Button health;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View root = inflater.inflate(R.layout.example_fragment, container, false);
// bind views like this:-
health= root.findViewById(R.id.button3);
return root;
}
}
要管理活动中的片段,您需要使用FragmentManager。要获取它,请从您的活动中调用getSupportFragmentManager()。 现在,活动类添加以下代码以将片段添加到活动中,:-
// Create new fragment and transaction
Fragment newFragment = new ExampleFragment();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);
// Commit the transaction
transaction.commit();
R.id.fragment_container
是容器布局的ID,要在活动布局中添加片段的容器布局,通常是框架布局。