我的目标是向listView添加数据,在推送通知显示对话框后,若用户按Yes,应用程序将显示带有片段的活动,然后再次显示new dialog以添加新项目。但如果我按add,我会得到:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.support.v4.app.LoaderManager android.support.v4.app.FragmentActivity.getSupportLoaderManager()' on a null object reference
将新项目添加到listview的对话框位于MainActivity中,但我需要在片段中刷新我的listview,我正在使用ViewPager。
似乎我的片段还没有初始化,但现在显示的是对话框。如何实现这个解决方案?还有一件事,我在通知中设置了AutoCancel(true),但notif仍在屏幕上。
以下是屏幕年表:步骤1步骤2
还有一张我无法添加的图片(
我的对话活动:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final String text = getIntent().getStringExtra("text");
new AlertDialogWrapper.Builder(this)
.setTitle(R.string.title_alert)
.setMessage(R.string.title_alert)
.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
})
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(DialogActivity.this, MainActivity.class);
intent.putExtra("notification",true);
intent.putExtra("text",text);
startActivity(intent);
finish();
}
}).show();
}
如果用户在第二个对话框中按add item,将校准的我的方法
private void showTrackerDialog(TrackersFragment f, final String text,boolean isFromNotif) {
final TrackersFragment trackersFragment = f;
tracker = new Tracker();
MaterialDialog dialog = new MaterialDialog.Builder(this)
.title("New tracker :)")
.customView(R.layout.add_track, true)
.positiveText("ADD")
.positiveColorRes(R.color.primary_light_green)
.negativeText(android.R.string.cancel)
.negativeColorRes(R.color.primary_red)
.callback(new MaterialDialog.ButtonCallback() {
@Override
public void onPositive(MaterialDialog dialog) {
if (hours.getValue() == 0 && minutes.getValue() == 0 && isLimit.isCheck()) {
Toast.makeText(getApplicationContext(), "Please check your the input values!", Toast.LENGTH_SHORT).show();
return;
}
//limited
if ((((hours.getValue() != 0 && minutes.getValue() == 0) || (hours.getValue() == 0 && minutes.getValue() != 0))
|| (hours.getValue()!=0 && minutes.getValue()!=0)) && isLimit.isCheck()) {
try {
hoursToMillis = Long.parseLong(String.valueOf(hours.getValue()));
minutesToMillis = Long.parseLong(String.valueOf(minutes.getValue()));
tracker.setLimitTime((hoursToMillis * 60 * 60 * 1000) + (minutesToMillis * 60 * 1000));
tracker.setName(name.getText().toString());
tracker.setElapsedTime((long) 0);
tracker.setIsFinished(false);
tracker.persist(RemindMe.db);
trackersFragment.updateListView(true,tracker);
return;
} catch (Exception ex) {
ex.printStackTrace();
Toast.makeText(getApplicationContext(), "Something goes wrong :(", Toast.LENGTH_SHORT).show();
return;
}
}
//no limit
if (!isLimit.isCheck()) {
tracker.setLimitTime(0L);
tracker.setName(name.getText().toString());
tracker.setElapsedTime((long) 0);
tracker.setIsFinished(false);
tracker.persist(RemindMe.db);
trackersFragment.updateListView(true,tracker);
}
}
@Override
public void onNegative(MaterialDialog dialog) {
}
}).build();
这是NullPointerExection,getSupportLoaderManager()
public void updateListView(boolean isAdded,Tracker tracker) {
if(isAdded && tracker!=null){
trackerList.add(tracker);
getActivity().getSupportLoaderManager().getLoader(TRACKLOADER_ID).forceLoad();
adapter.swapCursor(Tracker.getAll(db));
}
}
这里的问题不是试图添加到列表中,而是理解生命周期。在我看来,您似乎没有设置该片段,或者可能遇到了您正在使用的片段库的路径。您的错误是v4。支持。片段
。确保在任何地方都使用相同的类。甚至在打开它的时候。(检查您的进口。确保它们都是v4)。
还要检查您的main活动
是否没有扩展Activity
,而是扩展FragmentActivity
之后,如果您试图通过通知通知您的应用程序,最好的解决方案是使用广播接收器。
我想用通过DataTask检索的数据填充scrollview。我用api调用的结果填充一个可编码结构。我想把键和它的值添加到应用程序中的scrollview中。 scrollview通过以下方式访问 这是我的api调用。 这是我用来填充ScrollView的方法。 现在的问题是scrollview没有显示生成的TextViews。kentekenDataObject被填充,我通过将其打印到控制台进
我是新手颤动,我使用Firebase消息发送通知到设备,我们使用Web API发送请求到Firebase发送通知和Firebase发送通知到Android。我想在通知标题和身体显示两个按钮(接受和拒绝)像瓦特应用程序通知标记为已读选项我想要这样的东西。 我添加的Android清单文件: 颤振码 Web api服务代码
我想将我的添加到列中,这样我就可以在加载更多项目时在这个列表视图下面添加CircularProgressIndex ator。我使用了如何在Flutter中将列表视图添加到列中的建议?因此我制作了结构列- 你能告诉我我做错了什么吗?这个构建了新的小部件,但它构建在另一个列上。也许这是错的?
我想要得到一个这样的对象: 通过这样编码: 但我总是得到以下几点:
我有一个Toast通知从项目外部执行(在后台)。这里有: 我的问题是当我尝试执行代码时,当用户点击toast,我想要执行部分代码从主项目。有办法做到这一点吗? 谢谢
这是在一个单独的类中(不是或)。上面的工作很好,我可以看到我的MakeADialg日志消息。然而,当我试图创建一个实际的对话框,然后我得到很多崩溃。当我从C端调用到Java端时,我可以看出我并不是在摸索我在运行什么‘线程’。当我试图创建一个新的线程/对话框时,似乎遇到了麻烦。 我已经尝试了很多关于创建Runnable线程等的建议--但它们似乎总是给我一个可怕的‘无法在未调用looper.prepa