我有活动,在ViewPager中有5个片段,在工具栏中我创建了一个按钮,我想对所选标签片段执行不同的按钮操作。我有:
usertextView_done= (TextView) getActivity().findViewById(R.id.actionbar_tv_icon_done);
但它会为所有片段或所有标签创建单个实例。
答案 0 :(得分:1)
如果点击时每个片段都出现此吐司,那么您可以执行以下操作。
- 在你的活动中
public void calledFromFragment(String tag)
{
if(tag.equalsIgnorecase("fragment-1-tag")
{
// TODO : for fragment 1
}
else if(tag.equalsIgnorecase("fragment-2-tag"){
// TODO : for fragment 2
}
.
.
and so on
}
----在您的片段中
textView_done.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {
((Activity)context).calledFromFragment("fragment-1-tag");
});
为每个片段执行此操作并告诉我。
答案 1 :(得分:0)
我假设父活动中存在按钮和工具栏。 所以这是一个简单的方法:
这个想法是在活动中创建一个静态整数,并用它们各自的数字在片段中更新它,这样你就可以跟踪当前可见的片段。 例如:
//in each fragment add this code
@Override
public void onResume(){
ParentActivity.CURRENT_FRAGMENT = 2; //in case you're in fragment 2
}
现在,您必须更新已恢复的每个片段的整数。
//in actvity class
button .setOnClickListener(new OnClickListener() {
if(CURRENT_FRAGMENT ==1 ){
//do things for fragment 1
} else if (CURRENT_FRAGMMENT ==2 ){
//do things for fragment 2
}
etc...
}
最后在你的活动中,添加:
Private Sub drawArc(ByVal g As Graphics)
Dim a = valueRange / 2
drawArcSegment(g, minValue, a, optimumRangeColor)
drawArcSegment(g, a, maxValue, actionRangeColor)End Sub
Sub drawArcSegment(ByVal g As Graphics, ByVal startValue As Double, ByVal EndValue As Double, ByVal segmentColor As Color)
' Set The Rectanglefor the Arc Segment
Dim rect As New Rectangle(boarder + arcWidth2, arcCenter.Y - arcRadius, arcDiameter, arcDiameter)
' Set The Color of the Arc Segment
Dim arcColor As New SolidBrush(segmentColor)
Dim arcPen As New Pen(arcColor, arcWidth)
' Calulate the Start and Sweep Angle of the Arc Segment
Dim startAngle As Single = (startValue * valueAngle) + 180
Dim sweepAngle As Single = ((EndValue * valueAngle) + 180) - startAngle
' Draw Arc Segment
g.DrawArc(arcPen, rect, startAngle, sweepAngle)
End Sub