我目前有一个带有几个按钮,textview和listview的片段。
在CustomAdapter中,我有一个onClick方法,当他们点击自定义列表视图上的图像时,从列表视图中删除该项。
但是,这些是与价格相关联的项目,我想更新位于片段顶部的文本视图,说“总计”。
这是一些代码。
(ItemList适配器中的on Click方法)
<input type="text" id="q" />
<input type="button" id="submit" value="submit" />
<script>
$(function () {
$("#submit").submit(function() {
var url = "/tag/";
url += $("#q").val();
window.location = url;
});
});
</script>
我的片段中名为ItemList_Fragment
的函数holder.remove.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
_ItemObject itemToRemove = (_ItemObject) v.getTag();
remove(itemToRemove);
notifyDataSetChanged();
ItemList_Fragment itemlist = new ItemList_Fragment();
itemlist.resetTotal();
}
});
我删除商品时收到的错误
public void resetTotal() {
total = 0;
for (int i = 0; i < objects.size(); i++) {
total = total + (objects.get(i).getItemPrice() * objects.get(i).getItemQuantity());
}
quoteTotal.setText("$" + String.valueOf(String.format("%.2f", total + (total * 0.15))));
}
我理解它说我的textview“还不存在”,但我不确定为什么它在片段开头的onViewCreated方法中声明了。
如果有人寻找完整答案:
05-09 10:15:54.172 5171-5171/quotenowv2 E/AndroidRuntime: FATAL EXCEPTION: main
Process: quotenowv2, PID: 5171
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
at quotenowv2.ItemList_Fragment.resetTotal(ItemList_Fragment.java:242)
at quotenowv2._ItemListAdapter$1.onClick(_ItemListAdapter.java:81)
at android.view.View.performClick(View.java:5204)
at android.view.View$PerformClick.run(View.java:21153)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
以上是在适配器中的getView方法中设置的,以下是在适配器getView中的onClick中如何使用它的示例
final Context context = parent.getContext();
final FragmentManager fm = ((Activity) context).getFragmentManager();
final ItemList_Fragment itemList = (ItemList_Fragment)fm.findFragmentByTag("itemsListTag");
答案 0 :(得分:2)
这是因为你在这里创建片段的新实例:
ItemList_Fragment itemlist = new ItemList_Fragment();
改为使用getFragmentManager().findFragmentByTag(FRAGMENT_TAG)
或者更好地使用自定义监听器并监听片段内的回调。