当我点击其中一个片段中的按钮时,没有任何反应,听众无法正常工作。每当我按下按钮试图按下按钮时,它就不会变成紫色。
爪哇:
public class CollegeMatch extends Fragment {
TextView resuLTS;
EditText actorsat;
EditText rank;
EditText gpa;
EditText apclasses;
public Button calcButton;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_college_match, container, false);
resuLTS = (TextView) view.findViewById(R.id.resuLTS);
actorsat = (EditText) view.findViewById(R.id.actorsat);
gpa = (EditText) view.findViewById(R.id.gpa);
rank = (EditText) view.findViewById(R.id.rank);
apclasses = (EditText) view.findViewById(R.id.apclasses);
Button calcButton;
calcButton = (Button) view.findViewById(R.id.calcButton);
calcButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view2) {
float act = Float.parseFloat(actorsat.getText().toString());
float ap = Float.parseFloat(apclasses.getText().toString());
float rk = Float.parseFloat(rank.getText().toString());
float gp = Float.parseFloat(gpa.getText().toString());
float res = act + ap + rk + gp;
resuLTS.setText(Float.toString(res));
}
});
return view;
}
}
XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="layout.CollegeMatch"
android:background="#bdeaf4"
android:id="@+id/calcBTN">
<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Find colleges!"
android:id="@+id/textView134"
android:layout_marginTop="50dp"
android:textColor="#000000"
android:textSize="37dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:typeface="serif"
android:textStyle="bold" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:ems="10"
android:id="@+id/actorsat"
android:layout_marginTop="57dp"
android:autoText="false"
android:hint="Enter Composite Score "
android:layout_below="@+id/textView134"
android:layout_alignLeft="@+id/gpa"
android:layout_alignStart="@+id/gpa" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ACT Composite"
android:id="@+id/textView135"
android:textColor="@color/abc_input_method_navigation_guard"
android:textSize="25dp"
android:layout_alignBottom="@+id/actorsat"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="46dp"
android:layout_marginStart="46dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Unweighted GPA"
android:id="@+id/textView136"
android:textColor="@color/abc_input_method_navigation_guard"
android:textSize="25dp"
android:layout_marginTop="35dp"
android:layout_below="@+id/textView135"
android:layout_alignLeft="@+id/textView135"
android:layout_alignStart="@+id/textView135" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Class Rank (Top _ %)"
android:id="@+id/textView138"
android:textColor="@color/abc_input_method_navigation_guard"
android:textSize="25dp"
android:layout_marginTop="47dp"
android:layout_below="@+id/textView136"
android:layout_alignLeft="@+id/textView136"
android:layout_alignStart="@+id/textView136" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:ems="10"
android:id="@+id/rank"
android:layout_above="@+id/tex554"
android:layout_alignLeft="@+id/apclasses"
android:layout_alignStart="@+id/apclasses"
android:hint="Enter Here (omit % sign) " />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Total # of AP classes"
android:id="@+id/tex554"
android:textColor="@color/abc_input_method_navigation_guard"
android:textSize="25dp"
android:layout_marginTop="39dp"
android:layout_below="@+id/textView138"
android:layout_alignLeft="@+id/textView138"
android:layout_alignStart="@+id/textView138" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:ems="10"
android:id="@+id/apclasses"
android:hint="Enter number here"
android:layout_alignBottom="@+id/tex554"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Match Me!"
android:id="@+id/calcButton"
android:layout_marginTop="57dp"
android:background="#ff0000"
android:textColor="#ffffff"
android:textSize="50dp"
android:layout_below="@+id/apclasses"
android:layout_alignLeft="@+id/textView134"
android:layout_alignStart="@+id/textView134" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Your College Match Results:"
android:id="@+id/textView155"
android:textColor="@color/abc_input_method_navigation_guard"
android:textSize="32dp"
android:layout_marginTop="46dp"
android:textStyle="normal|bold|italic"
android:layout_below="@+id/calcButton"
android:layout_centerHorizontal="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:ems="10"
android:id="@+id/gpa"
android:hint="Enter GPA here"
android:layout_above="@+id/textView138"
android:layout_alignLeft="@+id/rank"
android:layout_alignStart="@+id/rank" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:id="@+id/resuLTS"
android:layout_below="@+id/textView155"
android:layout_alignLeft="@+id/textView155"
android:layout_alignStart="@+id/textView155"
android:layout_marginTop="76dp"
android:layout_alignRight="@+id/textView155"
android:layout_alignEnd="@+id/textView155"
android:textColor="#000000"
android:textIsSelectable="false"
android:textSize="25dp" />
</RelativeLayout>
答案 0 :(得分:1)
你在onViewCreated()
方法中做的事情。在创建view
之后触发此方法,因此它不会应用您的资料。
将代码移到onCreateView()
内,如下所示:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_college_match, container, false);
//do stuffs, for example:
resuLTS = (TextView) view.findViewById(R.id.resuLTS);
actorsat = (EditText) view.findViewById(R.id.actorsat);
gpa = (EditText) view.findViewById(R.id.gpa);
rank = (EditText) view.findViewById(R.id.rank);
apclasses = (EditText) view.findViewById(R.id.apclasses);
Button calcbutton = (Button) view.findViewById(R.id.calcbutton);
calcbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick (View view2) {
float act = Float.parseFloat(actorsat.getText().toString());
float ap = Float.parseFloat(apclasses.getText().toString());
float rk = Float.parseFloat(rank.getText().toString());
float gp = Float.parseFloat(gpa.getText().toString());
float res = act + ap +rk +gp;
resuLTS.setText(Float.toString(res));
}
});
return view;
}
那应该有用(我没有编译器,所以这可能不完美,对于我在这里的任何问题)
答案 1 :(得分:0)
我总是看到这个错误
我自己犯了这个错误并看到其他人这样做,在给你的布局充气时这样做:
RelativeLayout view = (RelativeLayout) inflater.inflate(R.layout.fragment_college_match, null);
之后你可以这样做:
Button calcButton = (Button) view.getChildAt(8);
我不确定你是否仍然可以通过这种方式拨打view.findViewById()
,但尝试这是一个好主意。
我这不起作用,你得到一个错误,一定要发布。
<强>更新强>
我重读了inflate方法,只要inflater.inflate的最后一个参数为true,你应该可以使用你的方法,但不建议这样做。
最终答案:
在XML中,您不止一次添加id textView134:
首先是textview:
android:id="@+id/textView134"
按钮:
android:layout_alignLeft="@+id/textView134"
在按钮左对齐添加一个新ID,而不是这样做:
android:layout_alignLeft="@id/textView134"
请注意,没有&#34; +&#34;在引用现有ID时。
我也在很多其他观点中找到了它,所以一定要解决这个问题。
为什么你的问题出现了? 添加新的ID时(没有?我猜)代码不使用edittexts中的id。请务必了解添加和引用ID之间的区别。
希望我帮助,
<强> -Daniel 强>
答案 2 :(得分:0)
您只需要查看带有此片段的活动视图,这只有在您的片段已经创建时才会发生
覆盖片段中的onViewCreated()
方法并享受其魔力:) ..
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Button button = (Button) view.findViewById(R.id.YOURBUTTONID);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//place your action here
}
});
希望这可以帮到你;