Android: идентификатор ресурса в представлении? - PullRequest
3 голосов
/ 13 февраля 2012

Я передал свой идентификатор ресурса через намерение другому классу.Затем я извлекаю дополнительное из намерения и сохраняю его в int.

Теперь я хочу, чтобы этот int конвертировался в представление или что-то еще, чтобы я мог использовать getTag ()?Я пытался присвоить его ImageView, но получал NullPointer

Пропущено:

             int resourceId = v.getId(); 

             Intent intent = new Intent(FetchMenu.this,FetchContent.class);
             intent.putExtra("ResourceId",resourceId);  
             startActivity(intent);       

Получено:

             int id;

             Intent callingIntent = getIntent();
             int getView= callingIntent.getIntExtra("ResourceId", 1); 
             id = getView;

Это печатает в logcat:

System.out.println("Resource ID: " + id);

Logcat:"Resource ID: 2131099660"

Это дает мне NullPointer:

             View v = (View)findViewById(id);                

             String str=(String) v.getTag();

             System.out.println("Tag : " + str);

Спасибо

Ответы [ 2 ]

1 голос
/ 13 февраля 2012

Представления из типа int. Таким образом, вы можете поместить макет как Дополнения в Намерение:

final Intent intent = new Intent(this,Activity2.class);
intent.putExtra("layout",R.layout.mylayout);
startActivity(intent);

А потом в вашей Деятельности2:

Bundle bundle = getIntent().getExtras();
final int iLayout = bundle.getInt("layout");
setContentView(iLayout);
0 голосов
/ 13 февраля 2012

В первом упражнении вы должны подключить упражнение к макету, содержащему это представление.

 setContentView(R.layout.layout1);

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

Итак, в первом упражнении добавьте «(Context) this» в extra.

После восстановления контекста во втором упражнении:

View view = (View)context.findViewByid(id); 
...