android.content.ContextWrapper 处的 NullPointerException

2023-11-29

当我尝试通过获取颜色时getResources().getColor(R.color.yellow)在正常的活动中我得到这个异常:

07-12 11:58:38.019: E/AndroidRuntime(3233): FATAL EXCEPTION: main
07-12 11:58:38.019: E/AndroidRuntime(3233): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.moveinblue.planner/com.moveinblue.planner.controller.plan.PlanDayScreen}: java.lang.NullPointerException
07-12 11:58:38.019: E/AndroidRuntime(3233):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1993)
07-12 11:58:38.019: E/AndroidRuntime(3233):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2104)
07-12 11:58:38.019: E/AndroidRuntime(3233):     at android.app.ActivityThread.access$600(ActivityThread.java:132)
07-12 11:58:38.019: E/AndroidRuntime(3233):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1157)
07-12 11:58:38.019: E/AndroidRuntime(3233):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-12 11:58:38.019: E/AndroidRuntime(3233):     at android.os.Looper.loop(Looper.java:137)
07-12 11:58:38.019: E/AndroidRuntime(3233):     at android.app.ActivityThread.main(ActivityThread.java:4575)
07-12 11:58:38.019: E/AndroidRuntime(3233):     at java.lang.reflect.Method.invokeNative(Native Method)
07-12 11:58:38.019: E/AndroidRuntime(3233):     at java.lang.reflect.Method.invoke(Method.java:511)
07-12 11:58:38.019: E/AndroidRuntime(3233):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
07-12 11:58:38.019: E/AndroidRuntime(3233):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
07-12 11:58:38.019: E/AndroidRuntime(3233):     at dalvik.system.NativeStart.main(Native Method)
07-12 11:58:38.019: E/AndroidRuntime(3233): Caused by: java.lang.NullPointerException
07-12 11:58:38.019: E/AndroidRuntime(3233):     at android.content.ContextWrapper.getResources(ContextWrapper.java:81)
07-12 11:58:38.019: E/AndroidRuntime(3233):     at com.moveinblue.planner.controller.plan.PlanDayScreen$4.<init>(PlanDayScreen.java:408)
07-12 11:58:38.019: E/AndroidRuntime(3233):     at com.moveinblue.planner.controller.plan.PlanDayScreen.<init>(PlanDayScreen.java:406)
07-12 11:58:38.019: E/AndroidRuntime(3233):     at java.lang.Class.newInstanceImpl(Native Method)
07-12 11:58:38.019: E/AndroidRuntime(3233):     at java.lang.Class.newInstance(Class.java:1319)
07-12 11:58:38.019: E/AndroidRuntime(3233):     at android.app.Instrumentation.newActivity(Instrumentation.java:1023)
07-12 11:58:38.019: E/AndroidRuntime(3233):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1984)
07-12 11:58:38.019: E/AndroidRuntime(3233):     ... 11 more

有人可以给我一些后见之明吗?我完全迷路了。

活动中的代码:

package com.moveinblue.planner.controller.plan;

import java.text.SimpleDateFormat;
import java.util.BitSet;
import java.util.Calendar;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.AsyncTask;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Toast;

import com.moveinblue.api.Login;
import com.moveinblue.api.Planner;
import com.moveinblue.api.UnauthorizedException;
import com.moveinblue.api.io.InvalidURLException;
import com.moveinblue.api.io.OfflineException;
import com.moveinblue.api.model.ModelObject;
import com.moveinblue.api.model.Plan;
import com.moveinblue.api.model.time.Day;
import com.moveinblue.api.model.time.ScheduledThingToDo;
import com.moveinblue.api.model.time.ScheduledTime;
import com.moveinblue.api.model.time.ScheduledTime.TimeOfDay;
import com.moveinblue.planner.R;
import com.moveinblue.planner.controller.GenericPlannerScreen;
import com.moveinblue.planner.controller.thingtodo.ThingsToDoListScreen;
import com.moveinblue.planner.controller.user.LoginScreen;
import com.moveinblue.planner.ui.actionbar.ActionBar;
import com.moveinblue.planner.ui.draganddroplist.DragListener;
import com.moveinblue.planner.ui.draganddroplist.DragNDropListView;
import com.moveinblue.planner.ui.draganddroplist.DropListener;
import com.moveinblue.planner.ui.draganddroplist.RemoveListener;
import com.moveinblue.planner.utils.CommonActionStorage;
import com.moveinblue.planner.utils.CurrentItemsStorage;
import com.moveinblue.planner.utils.adapter.DragNDropAdapter;
import com.moveinblue.planner.utils.adapter.listeners.OnCheckListener;

public class PlanDayScreen extends GenericPlannerScreen {

DragNDropListView lista;
AutoCompleteTextView actv;
String[] dests;
DragNDropAdapter adapter;
private Boolean idDroppedOrDeleted = false;
private BitSet checkedBoxes = new BitSet();
private boolean firstLoad = true;
Day day;
@SuppressWarnings("unused")
private static final String LOG_TAG = PlanDayScreen.class
        .getCanonicalName();

@Override
public void load() {
    setContentView(R.layout.plan_day_list);
    setUpList();
    setUpBottomLayout(false);
    lista.requestFocus();
}

@Override
protected void loadActionBar() {
    Plan p = CurrentItemsStorage.currentPlan;
    Calendar c = CurrentItemsStorage.currentDay;
    ab = new ActionBar(this, ActionBar.TYPE_LIST);
    String date = new SimpleDateFormat("MMM dd, yyyy").format(c.getTime());
    date = Character.toUpperCase(date.charAt(0)) + date.substring(1);
    date = "(" + date + ")";
    String title;

    title = (p != null) ? p.name + " " + date : "Draft plan";

    ab.setTitle(title);
    ab.setBackAction(R.drawable.back, new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            Intent intent = new Intent(PlanDayScreen.this,
                    PlanTabsScreen.class);
            intent.putExtra("tab", 2);
            startActivity(intent);
            overridePendingTransition(android.R.anim.slide_in_left,
                    android.R.anim.fade_out);

        }
    });
    CommonActionStorage.setUpActionBar(ab);
}

private void addNewTTD() {
    if (getIntent().getBooleanExtra("schedule", false) && firstLoad) {
        try {
            Calendar c = CurrentItemsStorage.currentDay;
            TimeOfDay tod = CurrentItemsStorage.currentTimeOfDaySelectedOption;
            Planner.schedule(
                    CurrentItemsStorage.getCurrentThingToDo().ttdId,
                    new ScheduledTime(c, tod));
        } catch (Exception ex) {
            ex.getStackTrace();
        }
    }
    firstLoad = false;
}

/**
 * Sets up a bottom bar button
 * 
 * @param id
 *            The bottom bar button id you want to set
 */
private void setUpBottomButton(int id) {
    ImageButton b = (ImageButton) findViewById(id);
    switch (id) {
    case R.id.buttonBottom1:
        if (!areThereCheckedBoxes()) {
            b.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    // Add TTD to plan
                    Intent intent = new Intent(PlanDayScreen.this,
                            ThingsToDoListScreen.class);
                    startActivity(intent);
                }
            });
        } else {
            b.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    // Date
                }
            });
        }
        break;
    case R.id.buttonBottom2:
        if (!areThereCheckedBoxes()) {
            b.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    // Map
                    if (day != null) {
                        CurrentItemsStorage.mapModelObjects = new ModelObject[0];
                        CurrentItemsStorage.mapModelObjects[1] = day;
                        Intent intent = new Intent(PlanDayScreen.this,
                                PlanTabsScreen.class);
                        startActivity(intent);
                    }

                }
            });
        } else {
            b.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    // Confirm
                    new AlertDialog.Builder(PlanDayScreen.this)
                            .setIcon(android.R.drawable.ic_dialog_alert)
                            .setTitle(
                                    "Remove " + checkedCount()
                                            + " things to do")
                            .setMessage(
                                    "Do you really wish to remove "
                                            + checkedCount()
                                            + " things to do from your plan?")
                            .setPositiveButton("Yes",
                                    new DialogInterface.OnClickListener() {

                                        @Override
                                        public void onClick(
                                                DialogInterface dialog,
                                                int which) {
                                            // Remove
                                            for (int i = 0; i < lista
                                                    .getCount(); i++) {
                                                if (checkedBoxes.get(i)) {
                                                    // Get checked item
                                                    Object ttd = adapter
                                                            .getItem(i);
                                                    if (ttd instanceof ScheduledThingToDo) {
                                                        try {
                                                            // Remove it
                                                            ScheduledThingToDo tTD = (ScheduledThingToDo) ttd;
                                                            Planner.unschedule(
                                                                    tTD.ttdId,
                                                                    tTD.time);
                                                        } catch (OfflineException ex) {
                                                            Toast.makeText(
                                                                    PlanDayScreen.this,
                                                                    getResources()
                                                                            .getString(
                                                                                    R.string.unschedule_error),
                                                                    Toast.LENGTH_SHORT)
                                                                    .show();
                                                        } catch (InvalidURLException e) {
                                                        }
                                                    }
                                                }
                                            }
                                            // Reset checkedBoxes and
                                            // BottomLayout
                                            checkedBoxes = new BitSet();
                                            setUpBottomLayout(false);
                                            // Redraws the list
                                            setUpList();
                                        }
                                    }).setNegativeButton("No", null).show();
                }
            });
        }
        break;
    case R.id.buttonBottom3:
        b.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // Update

            }

        });
        break;
    }
}

/**
 * Sets up the list
 */
private void setUpList() {
    lista = (DragNDropListView) findViewById(R.id.listViewAgenda);
    new LoadList();
}

/**
 * Counts the number of checked boxes
 * 
 * @return the number of checked boxes
 */
private int checkedCount() {
    int x = 0;
    for (int i = 0; i < checkedBoxes.length(); i++) {
        x += checkedBoxes.get(i) ? 1 : 0;
    }
    return x;
}

/**
 * Changes the buttoms on the bottom action bar. If you pass true, you get
 * the "delete items" action bar. Else, you get the "add items" action bar.
 * 
 * @param isAnythingMarked
 *            True if you want to delete items, false if you want to add
 *            them.
 */
private void setUpBottomLayout(boolean isAnythingMarked) {
    ImageButton b1 = (ImageButton) findViewById(R.id.buttonBottom1);
    ImageButton b2 = (ImageButton) findViewById(R.id.buttonBottom2);
    ImageButton b3 = (ImageButton) findViewById(R.id.buttonBottom3);
    b1.setImageDrawable(getResources().getDrawable(
            isAnythingMarked ? R.drawable.action_plans
                    : R.drawable.action_add));
    b2.setImageDrawable(getResources().getDrawable(
            isAnythingMarked ? R.drawable.action_delete
                    : R.drawable.action_map));
    b3.setImageDrawable(getResources()
            .getDrawable(R.drawable.action_reload));
    setUpBottomButton(R.id.buttonBottom1);
    setUpBottomButton(R.id.buttonBottom2);
    setUpBottomButton(R.id.buttonBottom3);
}

private boolean areThereCheckedBoxes() {
    for (int i = 0; i < checkedBoxes.length(); i++) {
        if (checkedBoxes.get(i)) {
            return true;
        }
    }
    return false;
}

public void clickControlRowHandler(View v) {
    Intent intent = new Intent(PlanDayScreen.this,
            ThingsToDoListScreen.class);
    startActivity(intent);
}

/**
 * Drop Listener for the DragNDropListView
 */
private DropListener mDropListener = new DropListener() {
    public void onDrop(final int from, int to) {
        if (to == 0)
            to = 1;
        // If initial position is the same as final position, do nothing.
        if (to != from) {
            if (adapter instanceof DragNDropAdapter) {
                if (adapter.getItem(from) instanceof ScheduledThingToDo) {
                    new DropCall(from, to);
                    ((DragNDropAdapter) adapter).onDrop(from, to);
                }
            }
        }
    }
};

public OnClickListener onClickSave = new OnClickListener() {

    public void onClick(View v) {
        try {
            if (Login.isRegistered()) {
                if (Planner.loadPlan().name == null) {
                    CurrentItemsStorage.shallGoAfterCreatePlan = PlanDayScreen.class;
                    if (idDroppedOrDeleted) {
                        manageListChanges();
                    }
                    Intent intent = new Intent(PlanDayScreen.this,
                            SavePlanScreen.class);
                    startActivity(intent);
                    return;
                }
            } else {
                CurrentItemsStorage.currentPlan = Planner.loadPlan();
                CurrentItemsStorage.shallGoAfterLogin = PlanDayScreen.class;
                Intent intent = new Intent(PlanDayScreen.this,
                        LoginScreen.class);
                startActivity(intent);
            }

        } catch (OfflineException e) {
            Toast.makeText(PlanDayScreen.this,
                    getResources().getString(R.string.plan_error),
                    Toast.LENGTH_SHORT).show();
        }
        if (idDroppedOrDeleted) {
            manageListChanges();
        }
    }
};

/**
 * Unschedules every TTD, then schedules it again.
 */
private void manageListChanges() {

    for (int i = 0; i < adapter.getCount(); i++) {
        Object item = adapter.getItem(i);
        if (item instanceof ScheduledThingToDo) {
            try {
                ScheduledThingToDo scheduled = (ScheduledThingToDo) item;
                Planner.unschedule(scheduled.getId(), scheduled.time);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    int state = 0;
    for (int it = 0; it < adapter.getCount(); it++) {
        Object item = adapter.getItem(it);
        TimeOfDay tod = TimeOfDay.morning;
        if (item instanceof ScheduledThingToDo) {
            switch (state) {
            case 1:
                tod = TimeOfDay.morning;
                break;
            case 2:
                tod = TimeOfDay.afternoon;
                break;
            case 3:
                tod = TimeOfDay.evening;
                break;
            }
            try {
                Planner.schedule(((ScheduledThingToDo) item).ttdId,
                        new ScheduledTime(CurrentItemsStorage.currentDay,
                                tod));
            } catch (OfflineException e) {
                Toast.makeText(PlanDayScreen.this, "No connection",
                        Toast.LENGTH_SHORT).show();
            }
        } else {
            state++;
        }
    }
}

/**
 * RemoveListener for the DragNDropListView
 */
private RemoveListener mRemoveListener = new RemoveListener() {
    public void onRemove(int which) {
        // ListAdapter adapter = getListAdapter();
        if (adapter instanceof DragNDropAdapter) {
            ((DragNDropAdapter) adapter).onRemove(which);
            lista.invalidateViews();
        }
    }
};

/**
 * DragListener for the DragNDropListView
 */
private DragListener mDragListener = new DragListener() {

    int backgroundColor = getResources().getColor(R.color.yellow);
    int defaultBackgroundColor = getResources().getColor(R.color.blue_bg);

    public void onDrag(int x, int y, ListView listView) {
        // TODO Auto-generated method stub
    }

    public void onStartDrag(View itemView) {
        itemView.setVisibility(View.INVISIBLE);
        itemView.setBackgroundColor(backgroundColor);
        ImageView iv = (ImageView) itemView.findViewById(R.id.imageView1);
        if (iv != null)
            iv.setVisibility(View.INVISIBLE);
    }

    public void onStopDrag(View itemView) {
        itemView.setVisibility(View.VISIBLE);
        itemView.setBackgroundColor(defaultBackgroundColor);
        ImageView iv = (ImageView) itemView.findViewById(R.id.imageView1);
        if (iv != null)
            iv.setVisibility(View.VISIBLE);
    }
};

private class LoadList extends AsyncTask<Void, Void, Void> {

    public LoadList() {
        execute();
    }

    @Override
    protected void onPreExecute() {
        String[] x = { "Loading..." };
        addNewTTD();
        ArrayAdapter<String> asdf = new ArrayAdapter<String>(
                PlanDayScreen.this, R.layout.add_more, x);
        lista.setAdapter(asdf);
    }

    @Override
    protected Void doInBackground(Void... arg0) {
        ScheduledThingToDo[] ttds;
        try {
            try {
                // Loads current day
                day = Planner.loadDay(CurrentItemsStorage.currentDay);
                ttds = day.ttds;
            } catch (NullPointerException ex) {
                // No current day: Loads today
                Day day = Planner.loadDay(Calendar.getInstance());
                ttds = day.ttds;
            }
        } catch (OfflineException e) {
            // Offline
            Toast.makeText(PlanDayScreen.this,
                    getResources().getString(R.string.day_error),
                    Toast.LENGTH_SHORT).show();
            ttds = new ScheduledThingToDo[0];
        } catch (UnauthorizedException e) {
            // Something strange happened
            ttds = new ScheduledThingToDo[0];
        } catch (Exception e) {
            // Something even more strange happened
            ttds = new ScheduledThingToDo[0];
        }

        adapter = new DragNDropAdapter(PlanDayScreen.this,
                new int[] { R.layout.dragitemttd }, ttds);

        adapter.setOnCheckListener(new OnCheckListener() {

            @Override
            public void onCheck(boolean isChecked, int position) {
                checkedBoxes.set(position, isChecked);
                setUpBottomLayout(areThereCheckedBoxes());
            }
        });
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        lista.setAdapter(adapter);
        lista.setDropListener(mDropListener);
        lista.setRemoveListener(mRemoveListener);
        lista.setDragListener(mDragListener);

    }

}

private class DropCall extends AsyncTask<Void, Void, Void> {

    private int from, to;

    public DropCall(int from, int to) {
        this.from = from;
        this.to = to;
        execute();
        lista.invalidateViews();
    }

    @Override
    protected Void doInBackground(Void... arg0) {
        changeScheduledTTD(from, to);
        return null;
    }

    /**
     * Unschedules a TTD and then re-schedules it in its proper place
     * 
     * @param from
     *            The position the TTD came from
     * @param to
     *            The position the TTD has been dragged to
     */
    protected void changeScheduledTTD(int from, int to) {
        ScheduledThingToDo currentTTD;
        if (adapter.getItem(to) instanceof ScheduledThingToDo)
            currentTTD = (ScheduledThingToDo) adapter.getItem(to);
        else
            return;

        int indexMorning = 0;
        int indexAfternoon = 0;
        int indexEvening = 0;
        Object item = null;
        String currentTime = null;
        // Gets the indexes for Morning, Afternoon and Evening
        for (int i = 0; i < adapter.getCount(); i++) {
            item = adapter.getItem(i);
            if (item instanceof String) {
                currentTime = (String) item;
                if (currentTime.equals("MORNING")) {
                    indexMorning = i;
                }
                if (currentTime.equals("AFTERNOON")) {
                    indexAfternoon = i;
                }
                if (currentTime.equals("EVENING")) {
                    indexEvening = i;
                }
            }
        }

        TimeOfDay tod = null;
        if (to >= indexEvening) {
            tod = TimeOfDay.evening;
        } else if (to >= indexAfternoon) {
            tod = TimeOfDay.afternoon;
        } else if (to >= indexMorning) {
            tod = TimeOfDay.morning;
        }
        if (!currentTTD.time.getTimeOfDay().equals(tod)) {

            try {
                Planner.unschedule(currentTTD.ttdId, currentTTD.time);
                Planner.schedule(currentTTD.ttdId, new ScheduledTime(
                        CurrentItemsStorage.currentDay, tod));
            } catch (OfflineException e) {
                e.printStackTrace();
            }

        }
    }
}
}

Your mDragListener是一个成员变量。在初始化时,活动对象/实例可能尚未准备好。所以打电话getResource()的 Activity 将会失败。

// inner class or normal class ... change scope if needed
private class DragListener {
    int color = 0;
    public DragListener(Context context) {
        color = context.getResource().getColor(R.color.yellow);
    }
}

// activity
private DragListener mDragListener;
public void onCreate(...) {
    mDragListener = new DragListener(this);
    // more code
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android.content.ContextWrapper 处的 NullPointerException 的相关文章

  • 如何获取之前的碎片?

    为了在我的应用程序中重用某些片段 我需要知道哪个片段是返回堆栈上的第二个片段 为了做到这一点 我正在使用getFragmentManager getFragments 显示以下错误 但有效 FragmentManager getFragme
  • 使用 google Directions API 的地图视图绘制方向 - 解码折线

    我正在尝试使用 Google 方向 API 在我的地图视图上显示方向 但我在从 JSON 响应获取数据时遇到困难 我可以获得 级别 和 点 字符串 但无法弄清楚如何将它们解码为地图上的点 任何帮助将非常感激 我有一个类可以为您解码它们 添加
  • 如何强制 Eclipse 将 xml 布局和样式显示为文本?

    我最近升级到带有 ADT 20 0 3 的 Eclipse 4 2 Juno 如果我查看旧项目中的布局或样式 Eclipse 只会向我显示其适当的基于控件的编辑器 我想编辑语法突出显示的 xml 文本 我没有找到将插件的编辑器切换到此模式的
  • Twitter 登录说明

    我想在 Android 中创建一个 Twitter 应用程序 为此 我想创建一个登录页面并登录到 Twitter 为此 我们需要消费者密钥和消费者密钥 这是什么意思 要创建此登录页面 除了 Twitter 帐户之外 我们还需要其他任何东西吗
  • 在android中通过BLE传输图像

    我使用以下代码传输 1 MB 的图像 如果在每个数据包之间实现线程延迟 则图像将成功传输 如果未设置线程延迟 则所有数据包均从BluetoothGattServer 发送 但BluetoothGattCallback 不会接收所有数据包 任
  • Android 上的 SVG 支持

    Android 支持 SVG 吗 有什么例子吗 最完整的答案是这样的 Android 2 x 默认浏览器本身不支持 SVG Android 3 默认浏览器支持 SVG 要将 SVG 支持添加到 2 x 版本的平台 您有两个基本选择 安装功能
  • 自定义选择器活动:SecurityException UID n 无权 content:// uri

    我正在构建一个选择器应用程序来替换本机 Android 共享对话框 它工作正常 除非我尝试通过长按图像 gt 共享图像从 Chrome 共享图像 我发现 Google 没有捕获异常 它崩溃了 所以我可以通过 Logcat 查看它 在 Goo
  • 从 Android 代码设置的 SECRET_CODE

    我知道如何使用清单文件中的秘密代码 它与此源代码配合良好
  • 使用 ADB 命令获取 IMEI 号码 Android 12

    对于 11 之前的 Android 版本 我使用以下命令从我的设备获取 IMEI 号码 adb shell service call iphonesubinfo 4 cut c 52 66 tr d space or adb shell s
  • 播放 SoundCloud 曲目

    我可以在 Android 应用程序中播放 SoundCloud 中的曲目吗 我正在尝试这段代码 但它不起作用 String res https api soundcloud com tracks 84973999 stream client
  • 如何在android上的python kivy中关闭应用程序后使服务继续工作

    我希望我的服务在关闭应用程序后继续工作 但我做不到 我听说我应该使用startForeground 但如何在Python中做到这一点呢 应用程序代码 from kivy app import App from kivy uix floatl
  • glTexImage2D: 之前出错:( 0x506 内部 0x1908 格式 0x1908 类型 0x1401

    当使用 Android Studio 运行模拟器时 我在模拟器屏幕上看不到任何内容 一切都是黑色的 我得到以下事件日志 模拟器 glTexImage2D 出错了 0x506 内部 0x1908 格式 0x1908 类型 0x1401 我已经
  • Android Studio:未找到 Gradle DSL 方法:“classpath()”

    首先 我已阅读所有其他解决方案帖子以及有关迁移到 1 0 的官方文档 到目前为止 还没有任何效果 Error Error 23 0 Gradle DSL method not found classpath Possible causes
  • 如何在 Android 模块中使用 FirebaseAuth

    我正在开发一个聊天库 我想在其中显示登录用户的对话 制作该库的原因是我想将其集成到多个项目中 我现在面临的问题是FirebaseAuth表示用户尚未登录 FirebaseAuth getInstance mFirebaseApp getCu
  • 在 React Native 中调试应用程序崩溃

    我是 React Native 新手 我正在尝试安装 React Native Facebook SDK 以便我可以使用我的应用程序进行 Facebook 登录 我按照此处列出的步骤操作 https tylermcginnis com in
  • Android 相机未保存在特定文件夹 [MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA]

    当我在 Intent 中使用 MediaStore INTENT ACTION STILL IMAGE CAMERA 时遇到问题 相机正常启动 但它不会将文件保存在我的特定文件夹 photo 中 但是当我使用 MediaStore ACTI
  • 模块中的类无法加载

    我正在开发一个 2D Unity android 游戏 其中我最近添加了 Firebase Beta SDK 但添加后FirebaseAnalytics unitypackage我面临的错误是 无法加载模块中的类 当我删除文件夹时Fireb
  • Android:RecyclerView 不显示片段中的列表项

    有人可以帮我尝试让我的 RecyclerView 出现吗 如果我不在片段中实现它 就会出现这种情况 然而 当我尝试将其实现到片段中时 CarFront 中的其他 XML 代码与 RecyclerView 分开显示 我的日志中收到此错误 E
  • Android 中带有组的列表视图

    我有一个列表视图 每行都有一些日期和文本 我可以像 iPhone 中那样将这个 listView 分组 组之间有标题吗 在 android 中是否可能 请帮忙 即 我需要在 Listview 行之间有标题栏 以便如果我使用日期对其进行分组
  • 如何在片段中实现 onBackPressed() 和意图?

    我知道 onBackPressed 是活动中的一种方法 但是 我想在片段中使用该功能 以便当按下后退按钮时 它会通过 Intent 重定向到另一个活动 有什么办法解决这个问题吗 public class News Events fragme

随机推荐