首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >NullPointerException尝试使用自定义类数组检索savedInstanceState

NullPointerException尝试使用自定义类数组检索savedInstanceState
EN

Stack Overflow用户
提问于 2011-03-08 14:06:45
回答 1查看 2.1K关注 0票数 4

当屏幕旋转时,我在尝试让我的程序在变量中保留信息时遇到了问题。现在,当它旋转时,它会重置所有内容。我的信息存储在一个名为Players的自定义类的数组中。我已经尝试过使用putParcelableArray和getParcelableArray,并在自定义类和它所需的代码中实现了Parcelable。当我运行代码时,它会弹出强制关闭菜单,调试器会在我的代码上提供NullPointerException,用于检查savedInstanceState是否为空。

以下是发生问题的部分主代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package nicholsoft.LevelCounter;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;

public class LevelCounter extends Activity implements OnClickListener {
    public Player [] Players;
    TextView p1text;
    TextView p2text;
    TextView p3text;
    TextView p4text;
    TextView p5text;
    TextView p6text;
    TextView p1Level;
    ImageView p1Epic;
    TextView p2Level;
    ImageView p2Epic;
    TextView p3Level;
    ImageView p3Epic;
    TextView p4Level;
    ImageView p4Epic;
    TextView p5Level;
    ImageView p5Epic;
    TextView p6Level;
    ImageView p6Epic;
    TextView tTitle;

    private static final int MENU_EPIC_ON = 1;
    private static final int MENU_EPIC_OFF = 2;
    private static final int MENU_RESET_LEVELS = 3;
    private static final int MENU_RESET_NAMES = 4;
    private static final int MENU_RESET_ALL = 5;
    private static final int MENU_QUIT = 6;

    boolean Epic = false;
    String Title;
    int MaxLevel = 10;
    int ilevel = 1;
    String slevel = "1";

    void ResetLevels(){
        for(int x=0;x<6;x++){
            Players[x].setLevel(1);
        }
        p1Level.setText(String.valueOf(Players[0].getPlayerLevel()));
        p2Level.setText(String.valueOf(Players[1].getPlayerLevel()));
        p3Level.setText(String.valueOf(Players[2].getPlayerLevel()));
        p4Level.setText(String.valueOf(Players[3].getPlayerLevel()));
        p5Level.setText(String.valueOf(Players[4].getPlayerLevel()));
        p6Level.setText(String.valueOf(Players[5].getPlayerLevel()));
        p1Epic.setImageResource(R.drawable.black);
        p2Epic.setImageResource(R.drawable.black);
        p3Epic.setImageResource(R.drawable.black);
        p4Epic.setImageResource(R.drawable.black);
        p5Epic.setImageResource(R.drawable.black);
        p6Epic.setImageResource(R.drawable.black);
    }
    void SetNames(){
        p1text.setText(Players[0].getName());
        p2text.setText(Players[1].getName());
        p3text.setText(Players[2].getName());
        p4text.setText(Players[3].getName());
        p5text.setText(Players[4].getName());
        p6text.setText(Players[5].getName());
    }
    void ResetNames(){
        for(int x=0;x<6;x++){
            Players[x].setName("Player ".concat(String.valueOf(x+1)));
        }
        p1text.setText(Players[0].getName());
        p2text.setText(Players[1].getName());
        p3text.setText(Players[2].getName());
        p4text.setText(Players[3].getName());
        p5text.setText(Players[4].getName());
        p6text.setText(Players[5].getName());
    }
    void ResetAll(){
        ResetNames();
        ResetLevels();
    }
    void MinusLevel(Player p){
        if (p.getPlayerLevel()>1){
        p.setLevel(p.getPlayerLevel()-1);
        }
    }

    void PlusLevel(Player p){
        if(p.getPlayerLevel()<MaxLevel){
            p.setLevel(p.getPlayerLevel()+1);
        }
    }

    void AskName(final Player p){
        final AlertDialog.Builder alert = new AlertDialog.Builder(this);
        final EditText input = new EditText(this);
        alert.setView(input);
        alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
                String value = input.getText().toString().trim();
                p.setName(value);
                SetNames();
            }
        });

        alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                        dialog.cancel();
                    }
                });
        alert.show();
    }

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.main);


        Players = new Player[6];
        for(int x=0;x<6;x++){
            String playername = "Player ".concat(String.valueOf(x+1));
            Players[x] = new Player(playername,1,false);
        }

        if(!savedInstanceState.isEmpty()){ //null pointer exception on start?
            Players = (Player[]) savedInstanceState.getParcelableArray("LastPlayerState");
        }

        p1text = (TextView)this.findViewById(R.id.player_one_name);
        p1text.setOnClickListener(this);
        Button p1Minus = (Button)this.findViewById(R.id.p1Minus);
        p1Minus.setOnClickListener(this);
        Button p1Plus = (Button)this.findViewById(R.id.p1Plus);
        p1Plus.setOnClickListener(this);
        p2text = (TextView)this.findViewById(R.id.player_two_name);
        p2text.setOnClickListener(this);
        Button p2Minus = (Button)this.findViewById(R.id.p2Minus);
        p2Minus.setOnClickListener(this);
        Button p2Plus = (Button)this.findViewById(R.id.p2Plus);
        p2Plus.setOnClickListener(this);
        p3text = (TextView)this.findViewById(R.id.player_three_name);
        p3text.setOnClickListener(this);
        Button p3Minus = (Button)this.findViewById(R.id.p3Minus);
        p3Minus.setOnClickListener(this);
        Button p3Plus = (Button)this.findViewById(R.id.p3Plus);
        p3Plus.setOnClickListener(this);
        p4text = (TextView)this.findViewById(R.id.player_four_name);
        p4text.setOnClickListener(this);
        Button p4Minus = (Button)this.findViewById(R.id.p4Minus);
        p4Minus.setOnClickListener(this);
        Button p4Plus = (Button)this.findViewById(R.id.p4Plus);
        p4Plus.setOnClickListener(this);
        p5text = (TextView)this.findViewById(R.id.player_five_name);
        p5text.setOnClickListener(this);
        Button p5Minus = (Button)this.findViewById(R.id.p5Minus);
        p5Minus.setOnClickListener(this);
        Button p5Plus = (Button)this.findViewById(R.id.p5Plus);
        p5Plus.setOnClickListener(this);
        p6text = (TextView)this.findViewById(R.id.player_six_name);
        p6text.setOnClickListener(this);
        Button p6Minus = (Button)this.findViewById(R.id.p6Minus);
        p6Minus.setOnClickListener(this);
        Button p6Plus = (Button)this.findViewById(R.id.p6Plus);
        p6Plus.setOnClickListener(this);
        p1Level = (TextView)this.findViewById(R.id.p1Level);
        p1Epic = (ImageView)this.findViewById(R.id.p1Epic);
        p2Level = (TextView)this.findViewById(R.id.p2Level);
        p2Epic = (ImageView)this.findViewById(R.id.p2Epic);
        p3Level = (TextView)this.findViewById(R.id.p3Level);
        p3Epic = (ImageView)this.findViewById(R.id.p3Epic);
        p4Level = (TextView)this.findViewById(R.id.p4Level);
        p4Epic = (ImageView)this.findViewById(R.id.p4Epic);
        p5Level = (TextView)this.findViewById(R.id.p5Level);
        p5Epic = (ImageView)this.findViewById(R.id.p5Epic);
        p6Level = (TextView)this.findViewById(R.id.p6Level);
        p6Epic = (ImageView)this.findViewById(R.id.p6Epic);


    }

    protected void onPause(){
        Bundle b = new Bundle();
        b.putParcelableArray("LastPlayerState", Players);
        onSaveInstanceState(b);
    }


//  @Override
    public void onClick(View v) {
        switch(v.getId()){
        case R.id.player_one_name:  
            AskName(Players[0]);
            break;
        case R.id.p1Minus:
            MinusLevel(Players[0]);
            ilevel = Players[0].getPlayerLevel();
            slevel = String.valueOf(ilevel);
            if(ilevel>=10){
                p1Epic.setImageResource(R.drawable.epic);
            }
            if(ilevel<10){
                p1Epic.setImageResource(R.drawable.black);
            }
            p1Level.setText(slevel);
            break;
        case R.id.p1Plus:
            PlusLevel(Players[0]);
            ilevel = Players[0].getPlayerLevel();
            slevel = String.valueOf(ilevel);
            if(ilevel>=10){
                p1Epic.setImageResource(R.drawable.epic);
            }
            if(ilevel<10){
                p1Epic.setImageResource(R.drawable.black);
            }
            p1Level.setText(slevel);
            break;
        case R.id.player_two_name:
            AskName(Players[1]);
            break;
        case R.id.p2Minus:
            MinusLevel(Players[1]);
            ilevel = Players[1].getPlayerLevel();
            slevel = String.valueOf(ilevel);
            if(ilevel>=10){
                p2Epic.setImageResource(R.drawable.epic);
            }
            if(ilevel<10){
                p2Epic.setImageResource(R.drawable.black);
            }
            p2Level.setText(slevel);
            break;
        case R.id.p2Plus:
            PlusLevel(Players[1]);
            ilevel = Players[1].getPlayerLevel();
            slevel = String.valueOf(ilevel);
            if(ilevel>=10){
                p2Epic.setImageResource(R.drawable.epic);
            }
            if(ilevel<10){
                p2Epic.setImageResource(R.drawable.black);
            }
            p2Level.setText(slevel);
            break;
        case R.id.player_three_name:
            AskName(Players[2]);
            break;
        case R.id.p3Minus:
            MinusLevel(Players[2]);
            ilevel = Players[2].getPlayerLevel();
            slevel = String.valueOf(ilevel);
            if(ilevel>=10){
                p3Epic.setImageResource(R.drawable.epic);
            }
            if(ilevel<10){
                p3Epic.setImageResource(R.drawable.black);
            }
            p3Level.setText(slevel);
            break;
        case R.id.p3Plus:
            PlusLevel(Players[2]);
            ilevel = Players[2].getPlayerLevel();
            slevel = String.valueOf(ilevel);
            if(ilevel>=10){
                p3Epic.setImageResource(R.drawable.epic);
            }
            if(ilevel<10){
                p3Epic.setImageResource(R.drawable.black);
            }
            p3Level.setText(slevel);
            break;
        case R.id.player_four_name:
            AskName(Players[3]);
            break;
        case R.id.p4Minus:
            MinusLevel(Players[3]);
            ilevel = Players[3].getPlayerLevel();
            slevel = String.valueOf(ilevel);
            if(ilevel>=10){
                p4Epic.setImageResource(R.drawable.epic);
            }
            if(ilevel<10){
                p4Epic.setImageResource(R.drawable.black);
            }
            p4Level.setText(slevel);
            break;
        case R.id.p4Plus:
            PlusLevel(Players[3]);
            ilevel = Players[3].getPlayerLevel();
            slevel = String.valueOf(ilevel);
            if(ilevel>=10){
                p4Epic.setImageResource(R.drawable.epic);
            }
            if(ilevel<10){
                p4Epic.setImageResource(R.drawable.black);
            }
            p4Level.setText(slevel);
            break;
        case R.id.player_five_name:
            AskName(Players[4]);
            break;
        case R.id.p5Minus:
            MinusLevel(Players[4]);
            ilevel = Players[4].getPlayerLevel();
            slevel = String.valueOf(ilevel);
            if(ilevel>=10){
                p5Epic.setImageResource(R.drawable.epic);
            }
            if(ilevel<10){
                p5Epic.setImageResource(R.drawable.black);
            }
            p5Level.setText(slevel);
            break;
        case R.id.p5Plus:
            PlusLevel(Players[4]);
            ilevel = Players[4].getPlayerLevel();
            slevel = String.valueOf(ilevel);
            if(ilevel>=10){
                p5Epic.setImageResource(R.drawable.epic);
            }
            if(ilevel<10){
                p5Epic.setImageResource(R.drawable.black);
            }
            p5Level.setText(slevel);
            break;
        case R.id.player_six_name:
            AskName(Players[5]);
            break;
        case R.id.p6Minus:
            MinusLevel(Players[5]);
            ilevel = Players[5].getPlayerLevel();
            slevel = String.valueOf(ilevel);
            if(ilevel>=10){
                p6Epic.setImageResource(R.drawable.epic);
            }
            if(ilevel<10){
                p6Epic.setImageResource(R.drawable.black);
            }
            p6Level.setText(slevel);
            break;
        case R.id.p6Plus:
            PlusLevel(Players[5]);
            ilevel = Players[5].getPlayerLevel();
            slevel = String.valueOf(ilevel);
            if(ilevel>=10){
                p6Epic.setImageResource(R.drawable.epic);
            }
            if(ilevel<10){
                p6Epic.setImageResource(R.drawable.black);
            }
            p6Level.setText(slevel);
            break;
        }
    }
    public boolean onCreateOptionsMenu(Menu menu) {
            super.onCreateOptionsMenu(menu);

            tTitle = (TextView)this.findViewById(R.id.title);

            menu.add(0, MENU_EPIC_ON, 0, R.string.menu_epic_on);
            menu.add(0, MENU_EPIC_OFF, 0, R.string.menu_epic_off);
            menu.add(0, MENU_RESET_LEVELS, 0, R.string.menu_reset_levels);
            menu.add(0, MENU_RESET_NAMES, 0, R.string.menu_reset_names);
            menu.add(0, MENU_RESET_ALL, 0, R.string.menu_reset_all);
            menu.add(0, MENU_QUIT, 0, R.string.menu_quit);
            return true;
        }



     public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {

            case MENU_EPIC_ON:
                Epic = true;
                MaxLevel=20;
                tTitle.setText("Epic");
                return true;
            case MENU_EPIC_OFF:
                Epic = false;
                MaxLevel=10;
                tTitle.setText("Normal");
                ResetLevels();
                return true;
            case MENU_RESET_LEVELS:
                ResetLevels();
                return true;
            case MENU_RESET_NAMES:
                ResetNames();
                return true;
            case MENU_RESET_ALL:
                ResetAll();
                return true;
            case MENU_QUIT:
                finish();
                return true;
            }
            return false;
        }
}

下面是定制类的代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        package nicholsoft.LevelCounter;
    import android.os.Parcelable;
    import android.os.Parcel;
    public class Player implements Parcelable{
        private String Name;
        private int Level;
        private boolean Epic;

    public Player(String Name, int Level, boolean Epic){
    this.setName(Name);
    this.Level = Level;
    this.Epic = Epic;
    }
    public void writeToParcel(Parcel out, int flags){
        out.writeString(Name);
        out.writeInt(Level);
    }
    public static final Parcelable.Creator CREATOR = new Parcelable.Creator(){
        public Player createFromParcel(Parcel in){ return new Player(in);}
        public Player[] newArray(int size){return new Player[size];}
    };

    private Player(Parcel in){
        Name = in.readString();
        Level = in.readInt();
    }
    public Player(){}

    public int describeContents() {return 0;}

    public String getName(){
        return Name;        
    }
    public int getPlayerLevel(){
        return Level;
    }
    public boolean getPlayerEpic(){
        return Epic;
    }
    public void setName(String name){
        Name = name;
    }
    public void setLevel(int level){
        Level = level;
    }
    public void setEpic(boolean epic){
        Epic = epic;
    }
}

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-08 14:48:08

来自Activity.onCreate(Bundle)的API文档。

savedInstanceState如果活动在先前关闭后重新初始化,则此捆绑包包含它最近在onSaveInstanceState(捆绑包)中提供的数据。备注:否则为null。

Bundle可以是空的,您可能应该检查一下。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if(savedInstanceState != null && !savedInstanceState.isEmpty()){
     Players = (Player[]) savedInstanceState.getParcelableArray("LastPlayerState");
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5233529

复制
相关文章
Hadoop 自定义writable NullPointerException
Hadoop2.2 (测试环境,不过个人感觉1.X和2.X的自定义类型应该是一致的,没做过对比)
星哥玩云
2022/06/30
2690
Hadoop 自定义writable NullPointerException
创建自定义类的对象数组
CN_Simo
2017/12/26
2.3K0
创建自定义类的对象数组
C++ 自定义数组类模板
本篇通过自定义数组类模板,实现python列表的绝大部分函数,包括: 求最大值 求最小值 排序 在尾部添加元素 在指定位置(默认尾部)删除元素 在指定位置插入元素 在尾部添加进另外一个数组 查找指定值 移除第一次出现的指定值 从尾到头反向排列 切片功能 两个数组相等的判断 列表的数乘复制 等等 以及numpy中的arange函数 涉及到的知识点有: 类模板 函数模板 友元函数模板的类外实现 运算符重载(==, !=, *, +, <<, []) 头文件myArray.hpp代码如下: #
用户6021899
2021/07/05
1.2K0
C++ 开发中,使用类模板实现自定义数组
需求描述: 通过使用 C++ 中类模板的特性,实现一个能够存储任意类型的数组。可以通过在尾部追加的方式在数组中完成数据传入,且可以通过尾部操作删除数组最后一个元素。完整代码如下:
耕耘实录
2022/05/09
9120
Python自定义一个数组类,支持数组之
class MyArray: '''保证输入的内容是整型、浮点型''' def ___isNumber(self, num): if not isinstance(num, (int,float)): return False return True #开始写构造函数,接受可变长度的数组 def __init__(self, *args): if args == None: se
py3study
2020/01/16
1.4K0
C++新闻检索类
研究长字符串快速全文检索技术,实现某电力公司新闻中心新闻稿件全文检索统计系统。 1、 设计实现适合新闻稿件的基础类库 2、 新闻稿件全文检索功能实现 3、 新闻稿件按照关键字统计查询 代码如下 Paper.h #pragma once #ifndef PAPER_H // we're here only if PAPER_H has not yet been defined #define PAPER_H // Definition of PAPER_H class and relate
Enterprise_
2019/02/21
4750
区域和检索 - 数组不可变
给定一个整数数组 nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。
_kyle
2020/12/30
2940
检索com类工厂中的组件失败_检索com类工厂的组件失败
检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 8000401a 因为配置标识不正确,系统无法开始服务器进程。请检查用户名和密码。 (异常来自 HRESULT:0x8000401A)。
全栈程序员站长
2022/09/23
1.4K0
Java数据结构和算法(1)--自定义一个数组类和动态数组类
前言 今天就要离校了,大学生涯也走到了尽头。肯定有很多不舍,不舍的是学校的安逸和美丽的女友。同时也对自己的未来充满着信心,希望自己能够强大起来,保护自己想要保护的人。之前一段时间,在掘金上面看到一篇文章,文章提到了一个思想:学会编程,而不是学会Java,文中提到了自定义一个模仿ArrayList的类,要去实现其中的add,get,remove等方法。同时正好我之前也在看《Java数据结构和算法》这本书,文中第二章也详细讲解了数组,所以自己也动手完成了自定义一个数组内和动态数组类,于是乎就有了这篇文章去温故而
用户2032165
2018/06/05
1.1K0
LeetCode 307. 区域和检索 - 数组可修改(树状数组)
给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。
Michael阿明
2020/07/13
4300
实战 | Elasticsearch实现类Google高级检索
一、高级检索的功能点 通过高级搜索配置搜索项,能更准确的过滤掉不相干信息,获取最想要的检索信息。 以Google搜索为例(截取核心片段): 二、高级检索拆分 1、包含以下全部的关键词: 需要分词
铭毅天下
2018/03/20
1.5K0
实战 | Elasticsearch实现类Google高级检索
303. 区域和检索 - 数组不可变
给定一个整数数组 nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。 输入: ["NumArray", "sumRange", "sumRange", "sumRange"] [[[-2, 0, 3, -5, 2, -1]], [0, 2], [2, 5], [0, 5]] 输出: [null, 1, -1, -3] 解释: NumArray numArray = new NumArray([-2, 0, 3, -5, 2, -1]); numA
CaesarChang张旭
2021/06/01
3320
数组类学习
数组类学习一维数组的创建和初始化数组的创建// 格式type_tarr_name [const_n];//数组元素类型 名称 [常量表达式],用来指定数组大小数组的初始化//例#include<stdio.h>#include<strlen.h>int main(){ int arr[10]={1,2,3};//不完全初始化,剩下元素默认为初始值 char arr2[5]={'a','b'}; char arr3[5]="ab";//表达效果与arr2相同,不同的是在ab后面有一个
暮云
2022/10/31
4030
类数组借用数组方法
于JavaScript如何将对象转化为数组对象,其用法写法已经很常见且完善,比如JQuery中的makeArray函数对此的实现,也是跟大家想的差不多,只是考虑的周全些罢了,看源码;但对于类数组借用数组方法的写法,对其学习探究过程中大长了些许姿势,觉其倒是一个挺有趣问题。 何为“类数组” JavaScript中有一些看起来像却又不是数组的对象,唤作: 类数组。一个类数组对象: 具有:指向对象元素的数字(非负整数)索引下标以及length属性告诉我们对象的元素个数 不具有:诸如 push forEach 以及
晚晴幽草轩轩主
2018/03/27
1.3K0
使用Mybatis报错:java.lang.NullPointerException排查方案
SQL里的字体要与实体类的成员变量相对应,大小写也要注意。 注意区分属性ResutlMap和ResultType的使用,别混了。
JavaEdge
2021/02/23
12.6K0
使用Mybatis报错:java.lang.NullPointerException排查方案
Zookeeper 服务消费方 NullPointerException
所以是没有找到 HelloService 的服务提供方提供的实现类,于是回看服务提供方代码发现少加了 com.alibaba.dubbo.config.annotation 的 @Service 标签,于是补上代码:
RendaZhang
2020/11/04
4770
初次尝试使用VisualSFM记录
对于SFM一直觉得高大上又神秘,一年前粗略的了解过一下,今年有时间尝试深入了解SFM,对于初学者来说,VisualSFM真的时非常好的感受SFM的免费软件,于是通过其他博客的指导(没去看官方的英文版,容易犯困),做了一个3D模型出来,感觉还挺好玩,记录一下。
全栈程序员站长
2022/08/31
1.2K0
初次尝试使用VisualSFM记录
NuGet 使用自定义本地类库目录
在项目中使用 NuGet 作为第三方类库管理器是非常方便的, NuGet 默认会在解决方案的目录下建立一个名为 packages 的目录, 把解决方案所需的第三方类库都放到 packages 目录下, 解决方案下所有的项目都引用 packages 目录内的类库, 对于单个解决方案来说, 非常不错。
beginor
2020/08/10
5950
NuGet 使用自定义本地类库目录
007尝试使用UML图
尝试使用uml图来帮助自己快速的构建稳健的程序 uml对理清自己的思路,应该是很有帮助的了
上善若水.夏
2018/09/28
8960
点击加载更多

相似问题

NullPointerException in savedInstanceState丛

10

获取nullpointerexception值,savedInstanceState

12

使用savedInstanceState.getParcelableArrayList时的java.lang.NullPointerException

125

尝试检索NullpointerException时的奇怪LinearLayout

14

显示NullPointerException的自定义类的数组

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文