Как передать данные из основного действия в класс представления

#android #arrays #android-studio #android-studio-3.0

#Android #массивы #android-студия #android-студия-3.0

Вопрос:

Я пытаюсь передать два разных массива в класс BarActivity, но это класс представления, и он не позволит мне использовать намерение для передачи информации, как я думал, что смогу. Есть ли способ, которым я могу передать эти массивы в активность бара, чтобы я действительно мог начать создавать гистограмму.

это основное направление деятельности

 public class MainActivity extends AppCompatActivity {  EditText editText; ListView listView; ListAdapter listAdapter; Button btnCompute; @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);   editText=findViewById(R.id.edittext);  listView=findViewById(R.id.listView);  btnCompute=findViewById(R.id.btnCompute);   editText.setOnEditorActionListener(new EditText.OnEditorActionListener() {  @Override  public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {  if (actionId == EditorInfo.IME_ACTION_DONE)  {   try  {   if(editText.getText().toString().isEmpty())  {  listAdapter=null;  listView.setAdapter(null);  }  else  {  String[] arr =editText.getText().toString().split(",");  Intent i = new Intent(MainActivity.this,BarActivity.class);  i.putExtra("Grades", arr);  startActivity(i);  listAdapter=new ListAdapter(MainActivity.this,arr);  listView.setAdapter(listAdapter);  }   }  catch (Exception e)  {  e.printStackTrace();  }  return true;  }  return false;  }  });   btnCompute.setOnClickListener(new View.OnClickListener() {  @Override  public void onClick(View view) {  if(listAdapter!=null)  {    Integer [] list=listAdapter.getList();  Intent intent = new Intent(MainActivity.this,BarActivity.class);  intent.putExtra("Values", list);  startActivity(intent);  }  }  });  }    

А это и есть барактивность

 public class BarActivity extends View { //hash map Maplt;String, Floatgt; data = new HashMaplt;gt;(); private float barWidth = 60f; private float barSpace = 20f; private Paint mPaint;  // Intent i = getIntent(); // String[] myGrades = i.getStringArrayExtra("Grade"); // Intent intent = Intent.getIntentOld(); // String[] myValues = intent.getStringArrayExtra("Values"); public BarActivity(Context context, AttributeSet attrs) throws URISyntaxException {  super(context, attrs);   mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);  // mRandom = new Random();   data.put("A", 0.20f);  data.put("A-", 0.12f);  data.put("F", 0.1f);   } @Override  protected void onDraw(Canvas canvas) {      }  

Закомментированная часть // Intent i = getIntent() вообще не работает; она говорит мне использовать getIntentOld() вместо этого, что также не работает.

Комментарии:

1. Отправляющая часть выглядит нормально, но вы не отправили свою получающую часть

2. вы пытаетесь открыть BarActivity как activity, но его представление. Сделайте это как действие и внутри него используйте пользовательский класс представления.