Передача образа Uri из onActivityResult в класс Controller - PullRequest
0 голосов
/ 11 марта 2020

В моем MainActivity у меня есть пункт меню, который позволяет мне просматривать мой телефон на предмет изображения. После того, как изображение выбрано. Мне нужно, чтобы это изображение отображалось в представлении в основном макете.

Я понимаю, что вы можете отобразить изображение через ImageView, но мне нужно следовать структурному шаблону MVC. Поэтому мне нужно передать изображение Uri из onActivityResult() в мой класс Controller. Затем из класса контроллера, чтобы обновить модель / представление с новым изображением.

Как мне это сделать?

public class MainActivity extends AppCompatActivity {




@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    //MVC
    ChartView chartView = new ChartView(this);
    Model model = new Model();
    Controller controller = new Controller();

    //Connect MVC
    chartView.setModel(model);
    chartView.setController(controller);
    controller.setModel(model);
    model.addSubscriber(chartView);

}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main_menu, menu);
    return true;
}


@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.choose_chart:
            chooseChart();
            return true;
        case R.id.screenshot:
            screenshot();
            return true;
        case R.id.export_data:
            exportData();
        default:
            return super.onOptionsItemSelected(item);
    }
}


protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == 123 && resultCode == RESULT_OK) {
        Uri selectedImage = data.getData(); //The uri with the location of the image
        // do something with the selected image
        Intent intent = new Intent(getBaseContext(),Controller.class);
        intent.putExtra("singleImage", selectedImage.toString());
        startActivity(intent);

    }
}

private void exportData() {
}

private void screenshot() {
}

public void chooseChart(){
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent, "Select a chart"), 123);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...