我是Android新手,一直在线查看教程。我正在寻找一个具有可滚动界面的gridview,但是,我希望将其实现为片段而不是活动,如果没有扩展的AppCompatActivity,它就无法工作,因此寻找有关如何使用片段进行构建的建议。
以下是使用扩展AppCompatActivity的活动中gridview的代码。
public class MainActivity extends AppCompatActivity {
GridLayout mainGrid;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mainGrid = (GridLayout) findViewById(R.id.mainGrid);
//Set Event
setSingleEvent(mainGrid);
//setToggleEvent(mainGrid);
}
private void setToggleEvent(GridLayout mainGrid) {
//Loop all child item of Main Grid
for (int i = 0; i < mainGrid.getChildCount(); i++) {
//You can see , all child item is CardView , so we just cast object to CardView
final CardView cardView = (CardView) mainGrid.getChildAt(i);
cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (cardView.getCardBackgroundColor().getDefaultColor() == -1) {
//Change background color
cardView.setCardBackgroundColor(Color.parseColor("#FF6F00"));
Toast.makeText(MainActivity.this, "State : True", Toast.LENGTH_SHORT).show();
} else {
//Change background color
cardView.setCardBackgroundColor(Color.parseColor("#FFFFFF"));
Toast.makeText(MainActivity.this, "State : False", Toast.LENGTH_SHORT).show();
}
}
});
}
}
private void setSingleEvent(GridLayout mainGrid) {
//Loop all child item of Main Grid
for (int i = 0; i < mainGrid.getChildCount(); i++) {
//You can see , all child item is CardView , so we just cast object to CardView
CardView cardView = (CardView) mainGrid.getChildAt(i);
final int finalI = i;
cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this,ActivityOne.class);
intent.putExtra("info","This is activity from card item index "+finalI);
startActivity(intent);
}
});
}
}
这是我到目前为止尝试将其与片段集成时所尝试的。
public class DashboardFragment extends Fragment {
GridLayout mainGrid;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_dashboard, container,false);
mainGrid = (GridLayout) findViewById(R.id.mainGrid);
//Set Event
setSingleEvent(mainGrid);
//setToggleEvent(mainGrid);
}
private void setToggleEvent(GridLayout mainGrid) {
//Loop all child item of Main Grid
for (int i = 0; i < mainGrid.getChildCount(); i++) {
//You can see , all child item is CardView , so we just cast object to CardView
final CardView cardView = (CardView) mainGrid.getChildAt(i);
cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (cardView.getCardBackgroundColor().getDefaultColor() == -1) {
//Change background color
cardView.setCardBackgroundColor(Color.parseColor("#FF6F00"));
Toast.makeText(MainActivity.this, "State : True", Toast.LENGTH_SHORT).show();
} else {
//Change background color
cardView.setCardBackgroundColor(Color.parseColor("#FFFFFF"));
Toast.makeText(MainActivity.this, "State : False", Toast.LENGTH_SHORT).show();
}
}
});
}
}
private void setSingleEvent(GridLayout mainGrid) {
//Loop all child item of Main Grid
for (int i = 0; i < mainGrid.getChildCount(); i++) {
//You can see , all child item is CardView , so we just cast object to CardView
CardView cardView = (CardView) mainGrid.getChildAt(i);
final int finalI = i;
cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this,ActivityOne.class);
intent.putExtra("info","This is activity from card item index "+finalI);
startActivity(intent);
}
});
}
}
}
显示错误
答案 0 :(得分:0)
我认为您将面临编译时错误,因为在您的片段的onCreateView()
方法中返回膨胀的视图之前,您必须完成其他工作,如下所示:
public class DashboardFragment extends Fragment {
GridLayout mainGrid;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_dashboard, container,false);
mainGrid = (GridLayout) view.findViewById(R.id.mainGrid);
//Set Event
setSingleEvent(mainGrid);
return view;
}
private void setSingleEvent(GridLayout mainGrid) {
//Loop all child item of Main Grid
for (int i = 0; i < mainGrid.getChildCount(); i++) {
//You can see , all child item is CardView , so we just cast object to CardView
CardView cardView = (CardView) mainGrid.getChildAt(i);
final int finalI = i;
cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getActivity(),ActivityOne.class);
intent.putExtra("info","This is activity from card item index "+finalI);
startActivity(intent);
}
});
}
}
}
注意: - 请确保您已为CardView添加了相关性 在这样的build.gradle文件中。
dependencies {
implementation 'com.android.support:cardview-v7:27.1.1'
}