java - Android Studio:在另一个活动中单击按钮时更新片段列表
问题描述
我有一个捐赠应用程序,我想在单击 MainActivity 中的捐赠按钮时更新片段中的列表。
界面看起来像这样:
片段位于屏幕的右半部分。
我在 stackoverflow 上找到了一些资源,并尝试了几个代码,但它似乎不起作用。我在下面附加的代码使用了 detach-attach-commit 方法,但似乎什么也没发生。我用错了吗?方法名称“refreshFragmentUI”也是灰色的,当我将鼠标悬停在它上面时,我收到如下消息:
Method 'refreshFragmentUI(androidx.fragment.app.Fragment)' is never used
如何使用此方法刷新片段?
我以为我的数组可能有问题,但是当我 log.v 数组时,我看到了 logcat 中的数据。
MainActivity.java
package com.example.donation10;
import android.os.Bundle;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.NumberPicker;
import android.widget.ProgressBar;
import android.widget.RadioGroup;
import android.widget.TextView;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
private Button donateButton;
private RadioGroup paymentMethod;
private ProgressBar progressBar;
private NumberPicker amountPicker;
private TextView totalTextView;
private int totalDonated = 0;
ArrayList<String> array = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
// Create the button
donateButton = (Button) findViewById(R.id.donateButton);
if (donateButton != null)
{
Log.v("Donate", "Really got the donate button");
}
paymentMethod = (RadioGroup) findViewById(R.id.paymentMethod);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
amountPicker = (NumberPicker) findViewById(R.id.amountPicker);
totalTextView = (TextView) findViewById(R.id.totalTextView);
// set the min and max values for the amount picker
amountPicker.setMinValue(0);
amountPicker.setMaxValue(1000);
// setting the progress bar
progressBar.setMax(10000);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
public void donateButtonPressed (View view)
{
int amount = amountPicker.getValue();
int radioId = paymentMethod.getCheckedRadioButtonId();
String method = "";
if (radioId == R.id.PayPal){
method = "PayPal";
} else {
method = "Direct";
}
array.add("hey");
array.add("You");
totalDonated = totalDonated + amount;
progressBar.setProgress(totalDonated);
String msg = "Total so far $"+totalDonated;
totalTextView.setText(msg);
Log.v("array is ", array.get(0));
Log.v("array is ", array.get(1));
Log.v("Donate", "Donate Pressed! with amount " + amount + ", method: " + method);
Log.v("Donate", "Current total " + totalDonated);
}
public ArrayList getDonationsArray() {
return array;
}
}
捐赠历史.java
package com.example.donation10;
import android.R;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.ListFragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import java.util.ArrayList;
public class DonationHistory extends ListFragment {
public static DonationHistory newInstance(){
DonationHistory d = new DonationHistory();
return d;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.simple_list_item_activated_1, null);
return super.onCreateView(inflater,container,savedInstanceState);
}
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
ArrayList Array = ((MainActivity) getActivity()).getDonationsArray();
ArrayAdapter<String> adapter=new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_activated_1, Array);
setListAdapter(adapter);
}
public void refreshFragmentUI(Fragment d) {
getFragmentManager()
.beginTransaction()
.detach(d)
.attach(d)
.commit();
Log.v("IsRefresh", "Yes");
}
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}
}
日志猫
2020-11-13 18:33:10.835 11293-11293/? I/mple.donation1: Not late-enabling -Xcheck:jni (already on)
2020-11-13 18:33:10.866 11293-11293/? W/mple.donation1: Unexpected CPU variant for X86 using defaults: x86
2020-11-13 18:33:11.268 11293-11293/com.example.donation10 W/mple.donation1: Accessing hidden method Landroid/graphics/drawable/Drawable;->getOpticalInsets()Landroid/graphics/Insets; (light greylist, linking)
2020-11-13 18:33:11.268 11293-11293/com.example.donation10 W/mple.donation1: Accessing hidden field Landroid/graphics/Insets;->left:I (light greylist, linking)
2020-11-13 18:33:11.268 11293-11293/com.example.donation10 W/mple.donation1: Accessing hidden field Landroid/graphics/Insets;->right:I (light greylist, linking)
2020-11-13 18:33:11.268 11293-11293/com.example.donation10 W/mple.donation1: Accessing hidden field Landroid/graphics/Insets;->top:I (light greylist, linking)
2020-11-13 18:33:11.268 11293-11293/com.example.donation10 W/mple.donation1: Accessing hidden field Landroid/graphics/Insets;->bottom:I (light greylist, linking)
2020-11-13 18:33:11.311 11293-11293/com.example.donation10 W/mple.donation1: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (light greylist, reflection)
2020-11-13 18:33:11.312 11293-11293/com.example.donation10 W/mple.donation1: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (light greylist, reflection)
2020-11-13 18:33:11.387 11293-11293/com.example.donation10 W/mple.donation1: Accessing hidden method Landroid/widget/TextView;->getTextDirectionHeuristic()Landroid/text/TextDirectionHeuristic; (light greylist, linking)
2020-11-13 18:33:11.564 11293-11293/com.example.donation10 V/Donate: Really got the donate button
2020-11-13 18:33:11.575 11293-11293/com.example.donation10 D/OpenGLRenderer: HWUI GL Pipeline
2020-11-13 18:33:11.691 11293-11323/com.example.donation10 D/HostConnection: HostConnection::get() New Host Connection established 0xdd72c370, tid 11323
2020-11-13 18:33:11.706 11293-11323/com.example.donation10 D/HostConnection: HostComposition ext ANDROID_EMU_CHECKSUM_HELPER_v1 ANDROID_EMU_dma_v1 ANDROID_EMU_YUV420_888_to_NV21 ANDROID_EMU_YUV_Cache ANDROID_EMU_async_unmap_buffer GL_OES_vertex_array_object GL_KHR_texture_compression_astc_ldr ANDROID_EMU_gles_max_version_2
2020-11-13 18:33:11.712 11293-11323/com.example.donation10 I/ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasWideColorDisplay retrieved: 0
2020-11-13 18:33:11.714 11293-11323/com.example.donation10 I/ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasHDRDisplay retrieved: 0
2020-11-13 18:33:11.714 11293-11323/com.example.donation10 I/OpenGLRenderer: Initialized EGL, version 1.4
2020-11-13 18:33:11.714 11293-11323/com.example.donation10 D/OpenGLRenderer: Swap behavior 1
2020-11-13 18:33:11.715 11293-11323/com.example.donation10 W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
2020-11-13 18:33:11.715 11293-11323/com.example.donation10 D/OpenGLRenderer: Swap behavior 0
2020-11-13 18:33:11.730 11293-11323/com.example.donation10 D/eglCodecCommon: setVertexArrayObject: set vao to 0 (0) 0 0
2020-11-13 18:33:11.730 11293-11323/com.example.donation10 D/EGL_emulation: eglCreateContext: 0xdd705360: maj 2 min 0 rcv 2
2020-11-13 18:33:11.758 11293-11323/com.example.donation10 D/EGL_emulation: eglMakeCurrent: 0xdd705360: ver 2 0 (tinfo 0xdd7036a0)
2020-11-13 18:33:11.796 11293-11323/com.example.donation10 D/HostConnection: createUnique: call
2020-11-13 18:33:11.796 11293-11323/com.example.donation10 D/HostConnection: HostConnection::get() New Host Connection established 0xdd72c5a0, tid 11323
2020-11-13 18:33:11.799 11293-11323/com.example.donation10 D/HostConnection: HostComposition ext ANDROID_EMU_CHECKSUM_HELPER_v1 ANDROID_EMU_dma_v1 ANDROID_EMU_YUV420_888_to_NV21 ANDROID_EMU_YUV_Cache ANDROID_EMU_async_unmap_buffer GL_OES_vertex_array_object GL_KHR_texture_compression_astc_ldr ANDROID_EMU_gles_max_version_2
2020-11-13 18:33:11.799 11293-11323/com.example.donation10 E/eglCodecCommon: GoldfishAddressSpaceHostMemoryAllocator: ioctl_ping failed for device_type=5, ret=-1
2020-11-13 18:33:11.832 11293-11323/com.example.donation10 D/EGL_emulation: eglMakeCurrent: 0xdd705360: ver 2 0 (tinfo 0xdd7036a0)
2020-11-13 18:33:20.458 11293-11293/com.example.donation10 V/array is: hey
2020-11-13 18:33:20.458 11293-11293/com.example.donation10 V/array is: You
2020-11-13 18:33:20.458 11293-11293/com.example.donation10 V/Donate: Donate Pressed! with amount 1000, method: Direct
2020-11-13 18:33:20.458 11293-11293/com.example.donation10 V/Donate: Current total 1000
2020-11-13 18:33:22.398 11293-11293/com.example.donation10 V/array is: hey
2020-11-13 18:33:22.398 11293-11293/com.example.donation10 V/array is: You
2020-11-13 18:33:22.399 11293-11293/com.example.donation10 V/Donate: Donate Pressed! with amount 1000, method: Direct
2020-11-13 18:33:22.399 11293-11293/com.example.donation10 V/Donate: Current total 2000
解决方案
推荐阅读
- flutter - 如何在颤振中使用多个插件?
- laravel - 如何将登录用户从控件传递到 vuejs 组件?
- mysql - 将所有数据从一个数据库复制到另一个 MySQL - MariaDB
- python - 具有一列的 DataFrame,其值应每行增加 1
- powershell - 参考 PowerShell 7 中的 [Windows.Security.Credentials.PasswordCredential]
- command-line-interface - 如何连接到 Cloud Spanner 模拟器查看扳手 CLI?
- c# - 两台 PC 之间的 UDP 连接(请求的地址无效)
- java - 如何构建 .java 文件位于 WEB-INF/classes 中的 Maven Web 应用程序
- java - Spring Rest API Controller 中的静态变量是否会导致内存泄漏?
- java - MongoCK:如何在不同系统版本之间即时导入和迁移 mongoDB 数据?