gpt4 book ai didi

java - 如何在与activity_main不同的 Activity 中从SQLite访问数据?

转载 作者:行者123 更新时间:2023-12-01 22:00:02 24 4
gpt4 key购买 nike

我正在 Android Studio 上使用 SQLite 创建一个基本应用程序。我想在不是 Activity_main 的 Activity 的 ListView 中显示一些数据,但此 ListView 始终返回 null,然后编译器由于 NullPointerException 而崩溃。

这是一个带有抽屉布局菜单的应用程序。我将只发布我想要显示数据的 Activity 的 xml 代码 (maf.xml) 和 MainActivity.java(没有包和导入)。对象 BD 和 Lobito 是在其他 java 文件中创建的,并且工作正常,因为我在另一个项目中尝试过。

有人可以帮助我吗?谢谢。

--

ma​​f.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<ListView
android:id="@+id/listViewItems"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>

MainActivity.java


public class MainActivity extends AppCompatActivity {

private AppBarConfiguration mAppBarConfiguration;

ListView listViewItems;
ArrayAdapter<String> adapter;
ArrayList<String> arrayList;
BD bd = new BD(this);

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

listViewItems = findViewById(R.id.listViewItems);
listAll();

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();
}
});
DrawerLayout drawer = findViewById(R.id.drawer_layout);
NavigationView navigationView = findViewById(R.id.nav_view);

mAppBarConfiguration = new AppBarConfiguration.Builder(
R.id.nav_home, R.id.bandos, R.id.maf,
R.id.nav_tools, R.id.nav_share, R.id.maf)
.setDrawerLayout(drawer)
.build();
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
NavigationUI.setupWithNavController(navigationView, navController);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

@Override
public boolean onSupportNavigateUp() {
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
return NavigationUI.navigateUp(navController, mAppBarConfiguration)
|| super.onSupportNavigateUp();
}


public void listAll() {
List<Lobito> lobitos = bd.listaTodosLobitos();

arrayList = new ArrayList<String>();

adapter = new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_list_item_1, arrayList);

listViewItems.setAdapter(adapter);

for (Lobito l : lobitos) {

arrayList.add(l.getId() + "-" + l.getNome());
adapter.notifyDataSetChanged();
}
}


}

最佳答案

您正在从activity_main.xml 文件中找到listViewItems,当您在 maf.xml 中声明它时。这就是您收到错误的原因。

所以只需替换这一行

setContentView(R.layout.activity_main);

setContentView(R.layout.maf);

关于java - 如何在与activity_main不同的 Activity 中从SQLite访问数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58711772/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com