- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我是 Android 开发的新手,并试图了解主/细节流程设计。因此,我使用 Eclipse 为您创建的默认类 - 因此 ScreenDetailActivity
、ScreenDetailFragment
、ScreenListActivity
和 ScreenListFragment
.我的一个详细信息 fragment 使用的布局包含一系列用于输入数据的检查和字段,以及一个按钮,该按钮应该使使用 fragment 的 Activity 类将该数据传递给计算器类,然后计算器类使用数据。例如,在相关详细信息 fragment 之一使用的 calculation_layout.xml
文件中找到:
<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" />
我认为按钮的 calculate
功能可以正常工作(即,当计算为空或执行一些琐碎的事情时,应用程序不会崩溃);它在 ScreenListActivity
和 ScreenDetailActivity
中实现,因为两者都可以使用该 fragment 。
但是,每当我尝试访问详细信息 fragment 中的 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 基本上是一个小类的实例,包含应显示哪个 fragment 的信息):
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;
}
如前所述,结果是崩溃。
我认为我应该做的是以某种方式从 Activity 访问 rootView
,但我真的不知道如何安全有效地做到这一点。
有人可以给我一些指示吗?
更新:
我尝试实现 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();
}
但是,错误仍然存在。如果我将 ViewParent
重新转换为 LinearLayout
、ViewGroup
,或者直接使用 view
,它也会持续存在是来了。需要明确的是,我试图获取所单击按钮的父布局,以便我可以返回到该布局的其他子Views
并访问它们的状态。
最佳答案
您无需完成您的 Activity 即可实现此目标。删除 onclick 行并为布局中的按钮添加 id:
<Button android:id="@+id/calc_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_singleCalc" />
然后,只需将 OnClickListener 添加到 fragment 中的按钮即可。类似这样的事情:
private View mRootView;
private EditText mEditText;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// If mItem is non-null...
if (mItem != null) {
if (mItem.title == "Calculation") {
// If the title is Calculation, use the calculation layout
mRootView = inflater.inflate(R.layout.calculation_layout, container, false);
mEditText = (EditText) mRootView.findViewById(R.id.edit_phiD);
((Button)mRootView.findViewById(R.id.calc_button)).setOnClickListener(this);
} else {
// Otherwise, show the dummy content as text in a TextView
mRootView = inflater.inflate(R.layout.fragment_screen_detail, container, false);
((TextView) mRootView .findViewById(R.id.screen_detail)).setText(mItem.title);
}
} else {
mRootView = inflater.inflate(R.layout.fragment_screen_detail, container, false);
}
return mRootView;
}
(您的 fragment 需要为此实现 OnClickListener)。然后您将在 Fragment 上收到回调,这就是您在那里执行的操作:
public void onClick(View v){
//Retrieve all the information, and set the values in the Calculator
String number = mEditText.getText().toString();
double angle = Double.parseDouble(number);
Calculator.longCalc();
}
关于java - Android Master/Detail 流程 - 在 Activity 中操作 Detail fragment View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13722867/
这是我的代码。 1 Demo 1 2 Demo 2 3 Demo 3 我想做的是——如果任何一个的细节标签已打开,我打开/查看另一个 标签,那么较早的标签应该关闭/
我正在尝试构建一个 iPad Master-Detail 应用程序。主视图只是一个 TableViewController。我想为用户在主视图中点击的每个不同单元格更改完整的详细信息 View 。其中
我目前在我的子主题的 functions.php 文件中有一些代码,它应该在我的 WooCommerce 结帐页面上将“账单详细信息”更改为“运输详细信息”。 但是,当我更新到 WooCommerce
我想刷新 MasterDetail 项目中的详细信息页面。 (在模态 Controller 中进行编辑后应刷新详细信息。)我知道将代码块放在详细信息页面中的何处以强制刷新。我只是不知道要使用什么代码来
我的应用程序中有一个主从模式,但我希望细节能够切换 View 。我想尽可能多地节省空间,以便“内容”既漂亮又宽敞。 如何从一个“细节”导航到另一个“细节”,同时让“向上”按钮返回“主”列表?(参见“细
在过去,我有一个包含这样一个表的数据库: ProductID | ProductName | InStockWareHouse1 | InstockWareHouse2 ---------------
boost::details::pool::pthread_mutex 和 boost::details::pool::null_mutex 有什么区别。 我看到在最新的 boost 版本 - 1.4
我只获取数据源的详细信息,但没有获取 google fit 消耗的卡路里。如何获得燃烧卡路里的详细信息。我可以从( Google Fitness API returns only {} as resu
我刚刚在 Xcode 5 中创建了一个新的“Master-Detail application”项目。 然后在我的主视图 Controller 上,我将 TableView 更改为静态,并添加了一些项
我试图在“me”/me 部分下命名多个路由,以便在此命名空间下拥有所有基于用户配置文件/帐户的内容,以实现更干净的路由。 解决这个问题的最佳方法是什么?我发现重写默认的 REST 路由(profile
所以我是 Android 开发的新手,并试图了解主/细节流程设计。因此,我使用 Eclipse 为您创建的默认类 - 因此 ScreenDetailActivity、ScreenDetailFragm
我使用 var contacts:[details] 编写代码? = nil 我遇到了无法访问 contacts?.count 的问题,我不得不在任何地方使用可选值。例如 contacts[index
我已经成功地将 www.my-website/blog.php 重写为 www.my-website/blog 现在,我想对我的 blog-detail.php 页面做进一步的事情 从 www.my-
在问这个问题之前,我想说 this stackoverflow 中的问题与我的问题非常相似,但概念仍然不清楚,非常困惑。 我想了解依赖倒置原则,但我无法完全理解它? 下面是DIP说的两点 A. Hig
我是 SYCL/OpenCL/GPGPU 的新手。我正在尝试构建和运行常量加法程序的示例代码, #include #include #include #include namespace sy
我正在使用这个 Ray Wenderlich tutorial作为我正在从事的项目的指南。但是,我正在尝试扩展此模板以合并子目录、子子目录、子子子目录等。 例如,如果您单击主/主目录屏幕中的“Cand
我正在尝试创建一个小扩展,以便我可以从详细 View Controller 访问主视图 Controller 以更新变量。 import UIKit extension UISplitViewCont
我正在尝试基于由 MySQL 数据库支持的 Entity Framework 6 DbContext 实现基本的主从 View 。表格配置尽可能简单: 我的测试应用程序的表单包含两个 ComboBox
我知道这是一个老问题并且已经answered在 objective-c 中。但我正在寻找 Swift 中的解决方案。我在 AppDelegate 中的 splitviewController 代码如下
我的句子很少。在第一句话的结尾(在这一行),我想添加剧透,这将保留故事的其他部分。我正在尝试这样做,但是当单击更多时.. - 我的文本跳到下一行。我需要在一行中继续文本更多...请不要告诉我任何脚本,
我是一名优秀的程序员,十分优秀!