小编vet*_*tet的帖子

摇篮.如何在Android应用程序中编译之前生成源代码

在我的Android应用程序中,我需要生成源代码并在应用程序中使用它.
为此我创建了任务genSources(使用教程)来生成源代码.如果单独运行它可以正常工作.

在我的情况下,我需要自动运行源代码生成.

从教程中我发现了以下命令:

compileJava.dependsOn(genSources)

但这是
申请插件的未知命令:'com.android.library'gradle
抛出以下异常:
Error:(35, 0) Could not find property 'compileJava' on project ':data'.

看起来它可以与apply plugin一起使用:'Java',
但我不能将这两个插件一起使用

如何在编译之前解决此问题并生成所需的源代码?

的build.gradle

apply plugin: 'com.android.library'

configurations {pmd}

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"
    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

buildscript {
    repositories {
        maven {
            url "http://repo1.maven.org/maven2/"
        }
    }

    dependencies {
        classpath group: 'net.sourceforge.fmpp', name: …
Run Code Online (Sandbox Code Playgroud)

android gradle

10
推荐指数
1
解决办法
6333
查看次数

如何制作单个AAR文件,有一些其他AAR文件

你能帮我理解构建android库的一般概念,并在用户的应用程序中使用它.

所以,有以下情况:

在android studio中有以下模块:
核心
数据
绘图

并且有一个模块
应用程序
依赖于上述模块.

app.gradle

dependencies {
    compile project(':core')
    compile project(':data')
    compile project(':drawing')
}
Run Code Online (Sandbox Code Playgroud)

所以我可以从Android Studio运行该应用程序.

但我希望有类似AAR文件的东西,并将其包含在任何应用程序中,以便能够再次使用它而无需创建相同的模块.

我对Gradle不是很熟悉,所以我不确定是否可能以及如何做到这一点.

android gradle aar

6
推荐指数
1
解决办法
2743
查看次数

onCreateOptionsMenu未被调用

我有简单的应用程序.

这是MyActivity.java

public class MyActivity extends Activity {
    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        return super.onCreateOptionsMenu(menu);
    }
}
Run Code Online (Sandbox Code Playgroud)

我真的不明白为什么onCreateOptionsMenu在手机上调用方法而不是在平板电脑上调用?

android oncreateoptionsmenu

5
推荐指数
2
解决办法
1万
查看次数

当布局不为空时,得到"java.lang.IllegalStateException:片段已处于活动状态"

我有3个片段的活动和寻呼机.我使用标签进行切换.当我点击某个按钮时,我想用新的替换fragment0.仅当fragment0具有空布局时才有效.如果我在fragment0的布局中设置一些内容(必须有listview)抛出异常:

java.lang.IllegalStateException: Fragment already active
    at android.support.v4.app.Fragment.setInitialSavedState(Fragment.java:503)
    at android.support.v4.app.FragmentStatePagerAdapter.instantiateItem(FragmentStatePagerAdapter.java:110)
    at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:649)
Run Code Online (Sandbox Code Playgroud)

我使用以下布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:id="@+id/all_exp_frag"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent">

<ListView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/all_expenses"/>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

活动:

public class Activity extends FragmentActivity {

    private List<Fragment> fragments;
    private MyPagerAdapter pagerAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        fragments = asList(new Fragment0(), new Fragment1(), new Fragment2());
        // initialize pager, etc.
        pagerAdapter = new MyPagerAdapter(getSupportFragmentManager(), pager);
    }

    // handle add new fragment button
    @Override
    public boolean onOptionsItemSelected(MenuItem item) { 
        pagerAdapter.replaceCurrentFragment(new Fragment3());
    }

    public class …
Run Code Online (Sandbox Code Playgroud)

android android-fragments

5
推荐指数
1
解决办法
1万
查看次数

刷新时,Android Viewpager片段会刷新

我是Android的新手,我真的不明白为什么Fragment动态添加的内容(例如在按钮点击后添加的某些图像)在滚动一些Fragments然后再返回后消失了.

有非常简单的代码ActivityFragment:

public class MyActivity extends FragmentActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        final ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);
        final CustomAdapter adapter = new CustomAdapter(getSupportFragmentManager());
        viewPager.setAdapter(adapter);
    }

    class CustomFragment extends Fragment {

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            return inflater.inflate(R.layout.fragment, container, false);
        }

        @Override
        public void onActivityCreated(Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
            getView().findViewById(R.id.clickMeButton).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    getView().findViewById(R.id.image).setVisibility(View.VISIBLE);
                }
            });
        }

    }

    class …
Run Code Online (Sandbox Code Playgroud)

java android android-fragments android-viewpager android-pageradapter

3
推荐指数
1
解决办法
4135
查看次数