Это потому, что вы пытаетесь получить доступ к методу из onclicklistener.Метод getTempUri определен вне onClickListener, но вы, вероятно, не видите его, потому что onClickListener объявлен как inline следующим образом:
class YourContainingClass{
public Uri getTempUri(String){
//process string
}
public void someOtherMethod(){
button.setOnClickListener(new OnCLickListener(){
public void onClick(View v) {
//this is where you're trying to access getTempUri,
//from within the new OnClickListener instance
}
});
}
}
Это можно решить, обратившись к getTempUri следующим образом, если ваш содержащий классУпражнение:
((YourContainingClass)v.getContext()).getTempUri()
в противном случае вы можете позволить своему содержащему классу реализовать onClickListener следующим образом:
class YourContainingClass implements OnClickListener
{
public void someMethod(){
button.setOnClickListener(this);
}
public void OnClick(View v){
//put your code here, here you have access to getTepUri
this.getTempUri();
}
public Uri getTempUri(String someString){
//your logic
}
}
Я понимаю, что это может быть трудно понять, но попробуйте и не стесняйтесьзадавать вопросы