Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:ListView存在问题(使用Intent从另一个活动更新/传递值)_Android_Android Intent_Android Listview - Fatal编程技术网

Android:ListView存在问题(使用Intent从另一个活动更新/传递值)

Android:ListView存在问题(使用Intent从另一个活动更新/传递值),android,android-intent,android-listview,Android,Android Intent,Android Listview,我有一个活动,在特定条件下,它将向包含ListView的活动传递一个整数值。但是,我遇到了几个问题: 初始值为0,当执行活动并满足条件时,将传入另一个0,而不是实际值 每次从主活动运行ListView时都会重置它。我希望它保留以前运行的结果(直到用户点击ListView活动本身上的重置按钮) **编辑 3.我注意到了以前没有注意到的行为,即每次从主活动打开ListView活动时,都会向ListView添加另一个0 这是相关代码- 将值传递给包含ListView的活动的活动: if(conditi

我有一个活动,在特定条件下,它将向包含ListView的活动传递一个整数值。但是,我遇到了几个问题:

  • 初始值为0,当执行活动并满足条件时,将传入另一个0,而不是实际值

  • 每次从主活动运行ListView时都会重置它。我希望它保留以前运行的结果(直到用户点击ListView活动本身上的重置按钮)

  • **编辑 3.我注意到了以前没有注意到的行为,即每次从主活动打开ListView活动时,都会向ListView添加另一个0

    这是相关代码-

    将值传递给包含ListView的活动的活动:

    if(condition) {
        textview.setText("String1");
        Intent intent = new Intent(this, ListViewActivity.class);
        intent.putExtra("numCounter", numCounter);
    }
    
    ListView numListView;
    ArrayAdapter<Integer> listAdapter; 
    
    static ArrayList<Integer> numArrayList = new ArrayList<Integer>();
    
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_name);
    
        Intent intent = getIntent();
        int intentNum = intent.getIntExtra("numCounter", 0);
        addNumArrayList(intentNum);
    
        numListView = (ListView) findViewById(R.id.numberListView);
    
        listAdapter = new ArrayAdapter<Integer>(this, R.layout.listview_row, numArrayList);
    
        numListView.setAdapter(listAdapter); 
    }
    
    // Keep ArrayList to size of 10, while keeping it sorted 
    // (displaying only the 10 lowest)
    
    public static void addNumArrayList(int val) {
        numArrayList.add(val);
        Collections.sort(numArrayList);
        if(numArrayList.size() > 10) {
            for(int i = 10; i < numArrayList.size(); i++) {
                numArrayList.remove(i);
            }
        }
    }
    
    具有ListView的活动:

    if(condition) {
        textview.setText("String1");
        Intent intent = new Intent(this, ListViewActivity.class);
        intent.putExtra("numCounter", numCounter);
    }
    
    ListView numListView;
    ArrayAdapter<Integer> listAdapter; 
    
    static ArrayList<Integer> numArrayList = new ArrayList<Integer>();
    
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_name);
    
        Intent intent = getIntent();
        int intentNum = intent.getIntExtra("numCounter", 0);
        addNumArrayList(intentNum);
    
        numListView = (ListView) findViewById(R.id.numberListView);
    
        listAdapter = new ArrayAdapter<Integer>(this, R.layout.listview_row, numArrayList);
    
        numListView.setAdapter(listAdapter); 
    }
    
    // Keep ArrayList to size of 10, while keeping it sorted 
    // (displaying only the 10 lowest)
    
    public static void addNumArrayList(int val) {
        numArrayList.add(val);
        Collections.sort(numArrayList);
        if(numArrayList.size() > 10) {
            for(int i = 10; i < numArrayList.size(); i++) {
                numArrayList.remove(i);
            }
        }
    }
    
    ListView-numListView;
    阵列适配器;
    静态ArrayList numArrayList=新ArrayList();
    创建时受保护的void(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_name);
    Intent=getIntent();
    int intentNum=intent.getIntExtra(“numCounter”,0);
    addNumaraylist(intentNum);
    numListView=(ListView)findViewById(R.id.numberListView);
    listAdapter=new ArrayAdapter(此,R.layout.listview_行,numArrayList);
    setAdapter(listAdapter);
    }
    //将ArrayList的大小保持为10,同时保持排序
    //(仅显示最低的10个)
    公共静态void addNumArrayList(int val){
    NumarayList.add(val);
    Collections.sort(numArrayList);
    如果(numArrayList.size()>10){
    对于(int i=10;i
    我基本上希望这样,只有其他活动可以更改它,除非在ListView活动本身上点击reset按钮(仅从主活动打开活动不应该做任何事情)


    如何修复它?

    为addnumArrayList添加以下条件

    Bundle mBundle = intent.getExtras();
    if(mBundle != null && mBundle.containsKey(¨numCounter¨)){
        int intentNum = intent.getIntExtra("numCounter", 0);
        addNumArrayList(intentNum);
    }
    
    即使该键不存在,也会得到默认值0。因此,务必检查钥匙是否存在

    只要listView被重置,您应该将值存储在文件中而不是静态变量中,如果进程被终止,这些值将被重置

    编辑:试试这个

       int intentNum = intent.getIntExtra("numCounter", -1); // -1 or any number that you do not pass
       if(intentNum != -1)
        addNumArrayList(intentNum);
    

    你的问题不太清楚。尝试提供一个更好的活动流程示例以及发生的情况。另外,请记住,对于当前代码,每次调用列表活动时,您都会添加
    0
    或另一个int值。@Luksprog Ok,假设我想跟踪用户单击按钮(即“numCounter”)的次数,我想将该值传递给另一个具有ListView的活动,并基本上保留一个表(list)用户在每个会话中的单击次数。表格将从低到高排序,我只保留最低的十个。当前,该值未从其他活动的意图传入。每次我从主活动查看列表活动时,都会传入另一个0,这是我不想发生的。@Luksprog我在问我如何修复它并获得我想要的功能,而不是简单地重复我在问题中已经发现和指出的内容。因此,现在它是空白的,即使在完成其他活动,然后拉出列表视图之后,它仍然是空白的。这是意料之中的吗?我不知道你在其他活动中做什么。您是否正在启动listActivity并传递extraNo,这就是我为它提供的所有代码。我只是创建一个新的Intent并将值传递给ListView。您已经编写了一个特定的条件,它将向活动传递一个整数值。这个条件是什么?我想这一条件永远不会满足。您在哪里添加额外的内容?由于文本视图正在打印到屏幕上,因此满足了该条件,因此这不是问题所在。我不熟悉ListView/保留值,因此它们不会被删除。这只是我想添加的一个功能,用户可以在每次使用应用程序时使用它作为参考。