所以我是 Android 开发的新手,并试图围绕主/细节流程设计。因此,我使用 Eclipse 为您创建的默认类 - so ScreenDetailActivity
、ScreenDetailFragment
、ScreenListActivity
和ScreenListFragment
. 我的一个细节片段使用了一个布局,其中包含一系列用于输入数据的检查和字段,以及一个按钮,该按钮应该使使用片段的 Activity 类将该数据传递给计算器类,然后使用数据。例如,在calculation_layout.xml
有问题的 Detail 片段之一使用的文件中找到:
<EditText android:id="@+id/edit_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="numberDecimal|numberSigned"
android:hint="@string/background_value" />
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_singleCalc"
android:onClick="calculate" />
我认为我的 Buttoncalculate
功能正常工作(即当计算为空或做一些琐碎的事情时应用程序不会崩溃);它在 和 中都实现了ScreenListActivity
,ScreenDetailActivity
因为两者都可以使用片段。
但是,每当我尝试访问 Detail 片段中的 EditText 对象时,应用程序就会崩溃。我正在尝试这样的事情:
public void calculate(View view){
//Retrieve all the information, and set the values in the Calculator
EditText editText = (EditText) findViewById(R.id.edit_value);
String number = editText.getText().toString();
double angle = Double.parseDouble(number);
Calculator.longCalc();
}
并像这样在我的 ScreenDetailFragment 中扩展布局,与 Eclipse 生成的默认方法的工作方式不同(其中 mItem 基本上是一个小类的实例,其中包含有关应该显示哪个片段的信息):
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// The returned view
View rootView;
// If mItem is non-null...
if (mItem != null) {
if (mItem.title == "Calculation") {
// If the title is Calculation, use the calculation layout
rootView = inflater.inflate(R.layout.calculation_layout, container, false);
} else {
// Otherwise, show the dummy content as text in a TextView
rootView = inflater.inflate(R.layout.fragment_screen_detail, container, false);
((TextView) rootView.findViewById(R.id.screen_detail)).setText(mItem.title);
}
} else {
rootView = inflater.inflate(R.layout.fragment_screen_detail, container, false);
}
return rootView;
}
如前所述,结果是崩溃。
我认为我应该做的是以某种方式rootView
从 Activity 访问,但我真的不知道如何安全有效地做到这一点。
有人可以在这里给我一些指示吗?
更新:
我尝试实现 OnClickListener,在特定布局膨胀时将其设置为:
((Button)rootView.findViewById(R.id.button_calc)).setOnClickListener(this);
并像这样实现 onClick(View) 函数:
public void onClick(View view) {
//Retrieve all the information, and set the values in the Calculator
view = (View) view.getParent();
EditText editText = (EditText) layout.findViewById(R.id.edit_phiD);
String number = editText.getText().toString();
Calculator.angle = Double.parseDouble(number) * 2.0 * Math.PI/360.0;
Calculator.longCalc();
}
但是,错误仍然存在。如果我将 a重铸ViewParent
为 a LinearLayout
, aViewGroup
或者如果我view
按原样使用直接,它也会持续存在。需要明确的是,我试图获取被单击按钮的父布局,以便我可以返回到该布局的另一个子布局Views
并访问它们的状态。