Android 使用Java更改框架布局的背景图像
我有一个框架布局,希望根据阵列的当前状态更改背景图像/颜色。我可以根据数组更改文本,所以我知道如何更改,但找不到引用布局的方法 我在创建后初始化了框架布局(li),但是当我尝试在后面的方法中更改颜色时,我得到错误“非静态字段‘li’不能从静态上下文引用” 谢谢你的帮助Android 使用Java更改框架布局的背景图像,android,methods,colors,static,Android,Methods,Colors,Static,我有一个框架布局,希望根据阵列的当前状态更改背景图像/颜色。我可以根据数组更改文本,所以我知道如何更改,但找不到引用布局的方法 我在创建后初始化了框架布局(li),但是当我尝试在后面的方法中更改颜色时,我得到错误“非静态字段‘li’不能从静态上下文引用” 谢谢你的帮助 public class GridViewFragmentActivity extends FragmentActivity { FrameLayout li; @Override protected v
public class GridViewFragmentActivity extends FragmentActivity
{
FrameLayout li;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FrameLayout li =(FrameLayout) findViewById(R.id.framelayout);
final DotsPageIndicator mPageIndicator;
final GridViewPager mViewPager;
final String[][] data =
{
{ "Row 0, Col 0", "Row 0, Col 1", "Row 0, Col 2", "Row 0, Col 3" },
{ "Row 1, Col 0", "Row 1, Col 1", "Row 1, Col 2" },
{ "Row 2, Col 0", "Row 2, Col 1", "Row 2, Col 2" }
};
// Get UI references
mPageIndicator = (DotsPageIndicator) findViewById(R.id.page_indicator);
mViewPager = (GridViewPager) findViewById(R.id.pager);
// Assigns an adapter to provide the content for this pager
mViewPager.setAdapter(new GridPagerAdapter(getFragmentManager(), data));
mPageIndicator.setPager(mViewPager);
}
private static final class GridPagerAdapter extends FragmentGridPagerAdapter {
String[][] mData;
private GridPagerAdapter(FragmentManager fm, String[][] data)
{
super(fm);
mData = data;
}
@Override
public Fragment getFragment(int row, int column)
{
String text = "CARD FRAGMENT";
if (row == 2 && column == 1)
{
text = "SIT UP";
li.setBackgroundColor(Color.parseColor("#FFFFFF"));
}
else
{
text = "PRESS UP";
li.setBackgroundColor(Color.parseColor("#FF0000"));
}
return (CardFragment.create(text, mData[row][column]));
}
@Override
public int getRowCount()
{
return mData.length;
}
@Override
public int getColumnCount(int row)
{
return mData[row].length;
}
}
}
通过GridPagerAdapter构造函数传递布局并保存在变量中
private static final class GridPagerAdapter extends FragmentGridPagerAdapter {
private final FrameLayout li;
String[][] mData;
private GridPagerAdapter(FragmentManager fm, String[][] data, FrameLayout li)
{
super(fm);
mData = data;
this.li = li;
}
//... stuff
}
然后相应地修改onCreate方法
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FrameLayout li =(FrameLayout) findViewById(R.id.framelayout);
final DotsPageIndicator mPageIndicator;
final GridViewPager mViewPager;
final String[][] data =
{
{ "Row 0, Col 0", "Row 0, Col 1", "Row 0, Col 2", "Row 0, Col 3" },
{ "Row 1, Col 0", "Row 1, Col 1", "Row 1, Col 2" },
{ "Row 2, Col 0", "Row 2, Col 1", "Row 2, Col 2" }
};
// Get UI references
mPageIndicator = (DotsPageIndicator) findViewById(R.id.page_indicator);
mViewPager = (GridViewPager) findViewById(R.id.pager);
// Assigns an adapter to provide the content for this pager
mViewPager.setAdapter(new GridPagerAdapter(getFragmentManager(), data, li));
mPageIndicator.setPager(mViewPager);
}
似乎可以正常工作,但我没有在mViewPager.setAdapter行上收到错误,因为它需要3个参数,因为在GridPageAdapter方法中添加了FrameLayout li。替换mViewPager.setAdapter(新的GridPagerAdapter(getFragmentManager(),data));使用mViewPager.setAdapter(新的GridPagerAdapter(getFragmentManager(),data,li));因为您需要将布局从活动传递到adapter.updated。现在应该更容易理解了。