0

現在のメソッドがあり、sActivity には使用したい public arrayList があります。私はそれを理解することができません.私のスピナーには値がありません. このスピナーは、arraylist にアイテムを追加している場所とは別のアクティビティにあります。だからintent.putExtra("arrayL", savedColors)、このアクティビティにarraylistを送信する必要があるかもしれません...推測だけではわかりません。どんな助けでも大歓迎です。いくつかの ColorSaver オブジェクトを arrayList にハード コードしたので、そこに値があることがわかります。

private void addColorNames()
{
    Spinner colorsSpinner = (Spinner) findViewById(R.id.colorsSpinner);

    ArrayAdapter<ColorSaver> dataAdapter 
        = new ArrayAdapter<ColorSaver>
        (RecallActivity.this, android.R.layout.simple_spinner_item, sActivity.savedColors);

    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    colorsSpinner.setAdapter(dataAdapter);

}//End addColorNames()

public class RecallActivity extends Activity {


ArrayList<String> namesArray = new ArrayList<String>();
SaveActivity sActivity = new SaveActivity();


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_recall);
    // Show the Up button in the action bar.
    setupActionBar();
    final Intent intent1 = new Intent(this, MainActivity.class);
    final Spinner colorList = (Spinner) findViewById(R.id.colorsSpinner);
    Button grabButton = (Button) findViewById(R.id.grabButton);

    //Load the spinner with the saved colors
    addColorNames();


    //namesArray.addAll(sActivity.nameArray);
    //colorsSpinner.add;
    grabButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            // Perform action on click
            //ColorSaver saver = new ColorSaver(colorName, redcolor, greencolor, bluecolor);
            //savedColors.add(saver);
            //startActivity(intent1);
            ColorSaver selectedItem = (ColorSaver) colorList.getSelectedItem();

            int redValue, greenValue, blueValue;
            String name;
            redValue = selectedItem.getRedValue();
            greenValue = selectedItem.getGreenValue();
            blueValue = selectedItem.getBlueValue();
            name = selectedItem.getColorName();
            intent1.putExtra("savedRValue", redValue);
            intent1.putExtra("savedGValue", greenValue);
            intent1.putExtra("savedBValue", blueValue);
            intent1.putExtra("savedName", name);
            startActivity(intent1);


        }//END onClick
    });
}

/**
 * Set up the {@link android.app.ActionBar}.
 */
private void setupActionBar() {

    getActionBar().setDisplayHomeAsUpEnabled(true);

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.recall, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
        // This ID represents the Home or Up button. In the case of this
        // activity, the Up button is shown. Use NavUtils to allow users
        // to navigate up one level in the application structure. For
        // more details, see the Navigation pattern on Android Design:
        //
        // http://developer.android.com/design/patterns/navigation.html#up-vs-back
        //
        NavUtils.navigateUpFromSameTask(this);
        return true;
    }
    return super.onOptionsItemSelected(item);
}// END onOptionsItemSelected(MenuItem item)


public void addColorNames()
{
    Spinner colorsSpinner = (Spinner) findViewById(R.id.colorsSpinner);

    ArrayAdapter<ColorSaver> dataAdapter 
        = new ArrayAdapter<ColorSaver>
        (RecallActivity.this, android.R.layout.simple_spinner_item, sActivity.savedColors);

    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    colorsSpinner.setAdapter(dataAdapter);

}//End addColorNames()

}//クラス終了

アイテムを配列に保存しているクラスは

public class SaveActivity extends Activity {

private static final String TAG = "Save Activity";
public ArrayList<ColorSaver> savedColors = new ArrayList<ColorSaver>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_save);
    // Show the Up button in the action bar.
    setupActionBar();

    final Intent intent1 = new Intent(this, MainActivity.class);
    Button saveButton = (Button) findViewById(R.id.saveButton1);
    final EditText nameField = (EditText) findViewById(R.id.colorNameField);
    final Intent intent = new Intent();

    //Making sure the savedColors arrayList has something in it.
    ColorSaver temp = new ColorSaver("TestColor", 180, 80, 255);
    savedColors.add(temp);


    saveButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            // Perform action on click

            int redcolor, greencolor, bluecolor;
            redcolor = intent.getIntExtra("RedValue", 255);
            greencolor = intent.getIntExtra("GreenValue", 255);
            bluecolor = intent.getIntExtra("BlueValue", 255);
            String colorName = nameField.getText().toString();

            ColorSaver saver = new ColorSaver(colorName, redcolor, greencolor, bluecolor);
            savedColors.add(saver);
            Log.i(TAG, savedColors.get(savedColors.size()-1).getColorName());
            startActivity(intent1);

        }
    });

}//END OnCreate()

/**
 * Set up the {@link android.app.ActionBar}.
 */
private void setupActionBar() {

    getActionBar().setDisplayHomeAsUpEnabled(true);

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.save, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
        // This ID represents the Home or Up button. In the case of this
        // activity, the Up button is shown. Use NavUtils to allow users
        // to navigate up one level in the application structure. For
        // more details, see the Navigation pattern on Android Design:
        //
        // http://developer.android.com/design/patterns/navigation.html#up-vs-back
        //
        NavUtils.navigateUpFromSameTask(this);
        return true;
    }
    return super.onOptionsItemSelected(item);
}

}//クラス終了

4

1 に答える 1

1

ArrayListfrom sActivity はnull、別のアクティビティからアクセスした場合である可能性があります。

内部に値があるかどうかを確認するかnull、単に を使用Intentして配列をアクティビティに渡しSpinnerます。Intent(の追加データを使用する方が安全です)

于 2013-10-02T05:00:02.863 に答える