0

アクティビティがあり、特定の条件で、ListViewを含むアクティビティに整数値を渡します。しかし、私はいくつかの問題に直面しています:

  1. 初期値は0であり、アクティビティが実行されて条件が満たされると、実際の値の代わりに別の0が渡されます。

  2. ListViewは、メインアクティビティから実行されるたびにリセットされます。以前の実行の結果を保持したい(ユーザーがListViewアクティビティ自体のリセットボタンを押すまで)。

**編集3.以前は気づかなかった動作に気づきました。つまり、メインアクティビティからListViewアクティビティを開くたびに、別の0がListViewに追加されます。

関連するコードは次のとおりです-

ListViewを含むアクティビティに値を渡すアクティビティ:

if(condition) {
    textview.setText("String1");
    Intent intent = new Intent(this, ListViewActivity.class);
    intent.putExtra("numCounter", numCounter);
}

ListViewを使用したアクティビティ:

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アクティビティ自体でリセットボタンが押された場合を除いて、他の1つまたは複数のアクティビティのみが変更できるようにしたいと思います(メインアクティビティからアクティビティを開くだけでは何も起こりません)。

どうすれば修正できますか?

4

1 に答える 1

1

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);
于 2012-12-15T18:32:16.803 に答える