"소득 추가"및 "소득 공제"를 기준으로 "순 수입"수를 계산하는 응용 프로그램을 작성하고 있습니다. 두 가지 레이아웃이 있습니다. 하나는 태블릿 용이고 다른 하나는 휴대 전화 용입니다. 태블릿 버전은 훨씬 상세한 설문지를 보여 주며 전화 버전은 더 짧은 형식을 보여줍니다.포함보기의 하위보기에서 키를 누를 때 알림을 수신하는 방법
"긴 형식"의 XML은 다음과 같습니다. 이 게시물에 대해 TableRows를 여러 개 가져 왔는데, XML을 자주 사용하고 싶지 않았기 때문입니다. 그것 이외에, 이것은 정확하게 내가 사용하고있는 것입니다. (두 개의 테이블이 나란히 있습니다.) 계산은 단지 소득에 모두 추가를 addes 별도의 클래스에서 수행하는
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/input_layout"
>
<TableLayout android:layout_height="wrap_content" android:id="@+id/tableLayout0" android:layout_width="fill_parent">
<TableRow android:layout_width="wrap_content">
<!-- Table appearing on left side prompting for additions to income -->
<TableLayout android:layout_height="wrap_content" android:id="@+id/tableLayout1" android:layout_width="fill_parent">
<TableRow android:id="@+id/tableRow0" android:layout_width="wrap_content">
<TextView android:layout_width="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:layout_height="wrap_content" android:id="@+id/textView1" android:text="@string/income"></TextView>
</TableRow>
<TableRow android:id="@+id/tableRow1" android:layout_width="wrap_content" android:layout_height="wrap_content">
<TextView style="@style/leftIndentText" android:id="@+id/textView2" android:text="@string/gross_income"></TextView>
<EditText style="@style/NumericInput" android:id="@+id/textGrossIncome">
<requestFocus></requestFocus>
</EditText>
</TableRow>
<TableRow>
<TextView style="@style/leftIndentText" android:text="@string/pay_frequency"/>
<Spinner style="@style/Spinner"
android:id="@+id/PayFrequency"
android:entries="@array/pay_frequency_choices"/>
</TableRow>
<TableRow android:id="@+id/tableRow2" android:layout_width="wrap_content" android:layout_height="wrap_content">
<TextView style="@style/leftIndentText" android:id="@+id/textView3" android:text="@string/investment_income"></TextView>
<EditText style="@style/NumericInput" android:id="@+id/textInvestmentIncome"></EditText>
</TableRow>
</TableLayout>
<!-- Table appearing on rightside prompting for deductions from income -->
<TableLayout>
<TableRow>
<TextView android:layout_width="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:layout_height="wrap_content" android:id="@+id/textView1" android:text="@string/deductions"></TextView>
</TableRow>
<TableRow android:id="@+id/tableRow4" android:layout_width="wrap_content" android:layout_height="wrap_content">
<TextView style="@style/leftIndentText" android:id="@+id/textView3" android:text="@string/unreimb_bus_exp"></TextView>
<EditText style="@style/NumericInput" android:id="@+id/textUnreimbBusExp"></EditText>
</TableRow>
</TableLayout>
</TableRow>
</TableLayout>
</ScrollView>
는 소득 공제를 뺀 순을 제공합니다. 사용자가 입력 필드를 떠날 때마다 대답을 계산하는 클래스를 업데이트해야합니다. 그래서 필자의 큰 비전은 각 입력 필드에 onFocusChangeListener를 첨부하는 것이 었습니다.
내가 직면 한 문제는 다음과 같습니다. 내가하고 싶은 일은 각 EditText보기에서 onFocusChangeListener를 명시 적으로 설정하지 않아도 EditText보기에서 포커스를 잃었을 때 알림을받는 방법을 찾는 것입니다. 내 추론은이 응용 프로그램이 개별 국가의 법률을 다루며 각 주마다 다른 입력이 있다는 것입니다. 그들은 모두 소득에 추가 및 공제를 위해 종기가 있습니다.
나는 안드로이드 개발자 포럼과이 사이트에서 온갖 경험을 쌓아 왔으며, 어떻게해야할지 모르겠다. 내가 작동하지 않는 아래로 내려간 경로는 EditText 뷰를 포함하는 TableView에서 onFocusChangeListener를 설정하는 것이지만 작동하도록 가져 오지 못했습니다.
즉, 내가 그이 조각이 작성되는과보기 팽창 때, 나는 그 시점에서 콜백을 추가하려고 노력하는 방법,
public class InputFragment extends Fragment
{
@Override
public View onCreateView(LayoutInflater inflator, ViewGroup container, Bundle savedInstanceState)
{
View view = inflator.inflate(R.layout.input_fragment_layout, container, false);
View table = view.findViewById(R.id.tableLayout0);
try
{
table.setFocusable(true);
table.setOnFocusChangeListener(new OnFocusChangeListener()
{
@Override
public void onFocusChange(View v, boolean hasFocus)
{
Log.e("TJD1", "Focus change event");
}
});
}
catch (Exception e)
{
Log.e("TJD1", "Error: " + e.toString());
}
return view;
}
}
또한 고려 글고 치기의 각을 반복하려고 조각이 생성 될 때 뷰를 가져 오지만 그 중 하나를 수행하는 방법을 알 수는 없습니다.
올바른 방향의 포인터는 매우 유용합니다. 고맙습니다.
응답 해 주셔서 대단히 감사합니다. 내 특정 사용자층에게는 추가적인 조치를 취하는 것이 장벽인데, 그들은 재판 중에 변호사가되는 경향이 있습니다. 배열이 응용 프로그램에 하드 코드 된 ID의 배열을 만드는 것은 제가 질문에 언급 한 이유 때문에 비상업적 인 것입니다. 그러나 ID 배열을 사용하라는 제안은 내가 게시 한 솔루션을 생각하는 데 도움이되었습니다. 신속한 대응과 솔루션에 대한 영감을 주신 것에 대해 다시 한번 감사드립니다! – TJDJD
확인. ** 게시됩니다 **. 새로운 사용자로서 나는 또 다른 5 시간 동안 "자기 대답"을 할 수 없다. 그러나이 솔루션에는 입력 필드의 ID 이름이 변경되어 R 클래스에는 입력 필드 만이 포함 된 새로운 정적 클래스가 있습니다. 이 작업을 수행하면서 Java의 리플렉션 API를 사용하여 반복 할 수있는 뷰 목록을 가져 왔으며 이벤트 처리기를 등록 할 수 있습니다. 이 방법을 사용하면 레이아웃 XML을 변경하면 나머지 응용 프로그램도 자동으로 피드됩니다. 유연한 솔루션에 대한 영감을 주신 @CommonsWare에게 다시 한 번 감사드립니다. – TJDJD
"내 특정 사용자층에게 추가적인 조치를 취하는 것은 장벽이며 재판 중에 변호사가되는 경향이 있습니다." - 추가 단계가 없습니다. 그들은 버튼을 누르거나 초점을 강제로 바꾸기 위해 완전히 무의미한 다른 EditText를 탭합니다. 탭은 탭입니다. – CommonsWare