如何在Android Studio 1中创建签名apk时禁用Eclipse之类的错误

Posted

技术标签:

【中文标题】如何在Android Studio 1中创建签名apk时禁用Eclipse之类的错误【英文标题】:How to disable error like Eclipse while creating signed apk in Android Studio 1 【发布时间】:2015-02-23 00:19:52 【问题描述】:

我的班级有问题,但是当我使用电缆连接到 android studio 运行它时,它在我的手机上运行良好,但是当我生成签名的 apk 时,我收到如下所示的班级错误

Error:Error: This fragment inner class should be static (app.browser.HomeActivity.MyWebBrowser) [ValidFragment]

我无法更改类静态,因为当我放置静态时,这个子类上下文会显示错误,所以请帮我解决这个问题,我想在生成签名 apk 时禁用此错误。请任何人都可以建议我。

我的代码..

public class HomeActivity extends FragmentActivity implements ActionBar.TabListener 


private ActionBar.Tab iTab;
static String TAB_TITLE="Untitle";
private ViewPager viewPager;
static TabsPageAdapter mAdapter;
static android.app.ActionBar actionBar;
Context context;
 Button btNewtab,btCloseTab,btTabCount;


    @Override
    protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);


    context=HomeActivity.this;

    objectReferences();
    createDir();

    actionBar =getActionBar();
    actionBar.setDisplayShowTitleEnabled(false);
    actionBar.setHomeButtonEnabled(false);
    actionBar.setDisplayShowCustomEnabled(true);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    actionBar.hide();
    mAdapter = new TabsPageAdapter(getSupportFragmentManager());
    viewPager.setAdapter(mAdapter);

        viewPager.setOffscreenPageLimit(500);
    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener()

        @Override
        public void onPageScrolled(int i, float v, int i2) 

        

        @Override
        public void onPageSelected(int i) 
           // mAdapter.notifyDataSetChanged();

                PAGE_CURRENT=i;
            System.out.println("CURRENT PAGE DISCRIPTION : "+PAGE_CURRENT);


        

        @Override
        public void onPageScrollStateChanged(int i) 

        
    );





//_________________TABS 实现方法_________________________

@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) 

        viewPager.setCurrentItem(tab.getPosition());
   

@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) 
      

@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) 
   
public class TabsPageAdapter extends FragmentStatePagerAdapter 


    public TabsPageAdapter(FragmentManager fm) 
        super(fm);
    

    @Override
    public Fragment getItem(int i) 
        return new MyWebBrowser();
    

    @Override
    public int getItemPosition(Object object) 
       return PagerAdapter.POSITION_NONE;
    

    @Override
    public int getCount() 

        return COUNT_TAB;
    



//____________________________________________
//_____________BROWSER CLASS____________________
//____________________________________________
public class MyWebBrowser extends Fragment implements View.OnClickListener,View.OnLongClickListener

    View rootView;

    @SuppressLint("AddjavascriptInterface")
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) 

        rootView = inflater.inflate(R.layout.my_web_browser, container, false);

       return rootView;

听说我出于个人原因删除了我的内容,请就此提出建议,谢谢各位

【问题讨论】:

您能提供更多代码吗? @vigneshearan-m 我编辑了问题,请建议我,再次感谢 我没有找到任何线索..我认为您应该为您的主要活动扩展 ActionBarActivtiy,您创建上下文实例变量的目的是什么,您是否为片段使用单独的类文件?跨度> 再次感谢重播,是的,我使用像 DownloadManager 一样需要 baseContext 和 shardPredferences ,并且还使用 Intent 来启动另一个活动,当我在 MyWebBrowser 类中使用静态方法时,这都需要删除静态方法,当不使用它时错误消失了,项目在设备中运行但不生成签名的apk 你应该使用它而不是像你一样访问上下文,你在这里定义为静态的方法我找不到。 【参考方案1】:

我认为您应该尝试在 build.gradle 中添加以下脚本。 (必须写在 android 标签中)

lintOptions 
    abortOnError false

当您的发布构建通过 lint 生成错误时,构建任务不会中止。

【讨论】:

哇,这就是我想要的,谢谢大家,再次感谢,但是生成了apk,但仍然存在 哦,没关系,只是 lint 错误。您可以在 build/outputs/lint-results.html 中找到 lint 报告,它会告诉您如何修复警告或错误。 谢谢比尔,你给了我新的技巧来查看 lint 错误,非常感谢【参考方案2】:

好的,首先您可以尝试将您的课程更改为像这样的 statci - Public class MyClass --> Public static class MyClass 或者您可以转到您的 eclipse 设置,然后转到 lint 首选项,然后取消选中其写入位置的标记,以便在导出时全面检查错误。或者您可以拒绝您的 FragmentActivity 就像静态一样。但我建议您不要扩展其他任何东西,而只扩展活动,然后实现其余部分并在您的 MainActivity 中声明 FragmentActivity。希望这会有所帮助。

【讨论】:

感谢您的重播,但我在 Android Studio 中制作并运行项目,而且我想将类更改为静态,这是可能的,而且我们在 Eclipse 中取消选中 lint 错误,就像可能一样在 Android Studio 1 中。 我们可以使用 cunstructer 吗?如果是,请告诉我该怎么做?【参考方案3】:

最后我解决了错误,只是添加了如下脚本并最好地尊重比尔。

lintOptions 
abortOnError false

android下

感谢所有给我答案的人

【讨论】:

以上是关于如何在Android Studio 1中创建签名apk时禁用Eclipse之类的错误的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Xamarin在Visual Studio中创建Android应用

如何在 Android Studio 1.4 中创建横向布局

如何在 Android Studio 中创建自定义图像按钮?

如何在Android Studio中创建入门芯片填充?

在 Android Studio 中创建新项目时如何选择目标 API 级别?

如何膨胀由 Android Studio 向导在 Activity 中创建的片段(列表)?