我有三个班级
mainActivity.java
public class mainactivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.abc);
}
public void firstDialog()
{
//Do something
//call next method
secondDialog()
}
public void secondDialog()
{
//Do something
}
}
接下来是另一个调用适配器类的类 secondclass.java
public class secondclass extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.xyz);
//calling and set adaptor
adapter=new Myadaptopr(this,result);
recyclerlist.setAdapter(adapter);
}
//现在是Adapter类
public class Myadaptopr extends RecyclerView.Adapter<Myadaptopr.ViewHolder> {
@Override
public void onBindViewHolder(final MedicineAdaptor.ViewHolder holder, int position) {
//In this function I need to call firstDialog() Method How Do I proceed.
}
}
我的问题是:
如何调用mainactivity.java类文件的方法。 我试过解决方案: 但是没有工作,因为主要活动类不会调用和设置适配器。 ((mainactivity)上下文).firstDialog();
答案 0 :(得分:2)
我建议你使用接口:
首先创建一个界面:
<div class="pagination"><?php echo $links; ?></div>
现在您可以从活动扩展界面:
public interface myInterface{
void myMethod();
}
该方法现在需要public class mainactivity extends AppCompatActivity implements myInterface
注释。
此时你可以简单地调用(从具有上下文的任何地方)
override
你已经完成了。
希望这有帮助,任何问题都可以自由地提出
我必须多说些什么。
对于您的目标解决方案:
将((myInterface) context).myMethod();
作为first activity context
的参数传递给intent
。然后使用此second activity
创建adaptor
,而不是使用&#34; context
&#34; this
。
你应该做什么
使用静态方法(新文件)创建外部类。
创建此方法:
second activity
现在,当您需要此方法时,请调用以下命令:
public class MyExternalClass{
public static void myMethod(){
//do stuff
}
}
你已经完成了。
答案 1 :(得分:-1)
MainActivity已经停止,因此从该类调用函数没有意义。如果要从适配器调用Activity方法,请在创建适配器时在构造函数中传递Activity引用。确保要从适配器调用的方法声明为“public”。要调用Adapter,只需使用Activity引用并调用方法。
class MainActivity {
onCreate() {
CustomAdapter ca = new CustomAdapter(MainActivity.this);
}
public methodA() {
}
}
class CustomAdapter {
Activity mActivity;
CustomAdapter(Activity activity) {
mActivity = activity;
}
// Call to function
mActivity.methodA();
}