В моем 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);
}