这是我的片段代码访问MainActivity.class抛出一个错误
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final MainActivity mainActivity = new MainActivity();
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.encrypt_fragment, container, false);
btn_selectin = (Button)view.findViewById(R.id.btn_import);
btn_encrypt = (Button)view.findViewById(R.id.btn_encrypt);
btn_selectin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mainActivity.test();
}
});
btn_encrypt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mainActivity.test1();
}
});
return view;
}
我想访问MainActivity.class方法
public void test(){
textview = 1;
showFileChooser();
}
private void showFileChooser() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);
try {
startActivityForResult(
Intent.createChooser(intent, "Select a File to Process"), FILE_SELECT_CODE);
} catch (android.content.ActivityNotFoundException ex) {
// Potentially direct the user to the Market with a Dialog
Toast.makeText(this, "Please install a File Manager.", Toast.LENGTH_SHORT).show();
}
}
这段代码实例文件浏览器
FATAL EXCEPTION:main 进程:com.plane.fusionencryp,PID:7551 java.la ng.RuntimeException:无法启动活动ComponentInfo {com.plane.fusionencryp/com.plane.fusionencryp.MainActivity}:android.view.InflateException:二进制XML文件行#109:二进制XML文件行#109:错误的文件扩展类片段 android.app.ActivityThread.-wrap11(Unknown Source:0)在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) at android .app.ActivityThread $ H.handleMessage(ActivityThread.java:1593) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:164) at android .app.ActivityThread.main(ActivityThread.java:6541) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote $ MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:767)
替换'mainActivity.test();''到((MainActivity)getActivity())测试();' –
不能使用的活动这样。如果片段包含在主要活动中,则可以从片段中调用getActivity()并获得该活动的一个实例。否则,无论是将该方法公开还是静态以访问该方法(这不是一个好主意,但它起作用),或者在Utils类中提取并在那里调用它 –