如何在ViewPager中使用不同片段的工具栏中的点击按钮?

时间:2016-11-19 10:00:16

标签: android android-fragments android-activity

我有活动,在ViewPager中有5个片段,在工具栏中我创建了一个按钮,我想对所选标签片段执行不同的按钮操作。我有:

usertextView_done= (TextView) getActivity().findViewById(R.id.actionbar_tv_icon_done);

但它会为所有片段或所有标签创建单个实例。

2 个答案:

答案 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