很抱歉,我是Android的新手,不知道应该包括什么。
我有一个名为FragmentNumeric
的片段,我用XML创建:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_view"
android:layout_gravity="top"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
card_view:cardElevation="4dp"
android:layout_marginBottom="10dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/numeric_fragment_title"
android:id="@+id/nameText"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:ems="10"
android:id="@+id/valueText"
android:text="@string/numeric_default_text"
android:textAlignment="center"
android:layout_below="@id/nameText"
android:layout_centerHorizontal="true"/>
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/numeric_down_button_text"
android:id="@+id/downButton"
android:layout_below="@+id/nameText"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_toLeftOf="@+id/valueText"
android:layout_toStartOf="@+id/valueText" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/numeric_up_button_text"
android:id="@+id/upButton"
android:layout_alignTop="@+id/valueText"
android:layout_toRightOf="@+id/valueText"
android:layout_toEndOf="@+id/valueText"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
</RelativeLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
点击FragmentNumeric
时,我可以向LinearLayout
添加FloatingActionButton
的实例:
final LinearLayout fragContainer = (LinearLayout) findViewById(R.id.llFragmentContainer);
final LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
ll.setId(1);
fragContainer.addView(ll);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String fragTag = "numericField" + numericFragmentCount;
getFragmentManager().beginTransaction().add(ll.getId(), FragmentNumeric.newInstance("Numeric Field", 0,0,20,2), fragTag ).commit();
numericFragmentCount++;
}
});
这是我的FragmentNumeric.java
课程:
import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.text.Editable;
import android.text.TextWatcher;
import android.text.style.TextAppearanceSpan;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class FragmentNumeric extends Fragment{
private static TextView nameText;
private static EditText valueText;
private static Button upButton;
private static Button downButton;
private int value = 0;
private int min = 0;
private int max = 10;
private int increment = 1;
private String name = "Numeric Field";
public static FragmentNumeric newInstance(String name, int startVal, int min, int max, int increment) {
FragmentNumeric f = new FragmentNumeric();
Bundle b = new Bundle();
b.putInt("startVal", startVal);
b.putInt("min", min);
b.putInt("max", max);
b.putInt("increment", increment);
b.putString("name", name);
f.setArguments(b);
return f;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_numeric, container, false);
valueText = (EditText) view.findViewById(R.id.valueText);
nameText = (TextView) view.findViewById(R.id.nameText);
upButton = (Button) view.findViewById(R.id.upButton);
downButton = (Button) view.findViewById(R.id.downButton);
this.setValue(getArguments().getInt("startVal"));
this.setIncrement(getArguments().getInt("increment"));
this.setMin(getArguments().getInt("min"));
this.setMax(getArguments().getInt("max"));
this.setName(getArguments().getString("name"));
valueText.addTextChangedListener(
new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
value = Integer.parseInt(valueText.getText().toString());
}
}
);
upButton.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View view) {
if (value < max) {
value+=increment;
}
setValue(value);
}
}
);
downButton.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View view) {
if (value > min){
value -= increment;
}
setValue(value);
}
}
);
return view;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
valueText.setText(""+value);
}
public int getMin() {
return min;
}
public void setMin(int min) {
this.min = min;
}
public int getMax() {
return max;
}
public void setMax(int max) {
this.max = max;
}
public int getIncrement() {
return increment;
}
public void setIncrement(int increment) {
this.increment = increment;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
nameText.setText(name);
}
}
每次按下按钮时,FragmentNumeric
成功添加LinearLayout
个实例,但每个片段上的upButton
和downButton
按钮似乎只会影响最新添加的片段。
答案 0 :(得分:1)
您的按钮是静态的。这就是为什么。他们不需要是静态的。
所以改变
private static TextView nameText;
private static EditText valueText;
private static Button upButton;
private static Button downButton;
到
private TextView nameText;
private EditText valueText;
private Button upButton;
private Button downButton;