抱歉,我是Android注释和依赖注入的新手.我试图了解事情的运作方式以及使用Android Annotations获得的好处.
我已经研究过示例,@EActivity, @ViewById, @App
在Android开发中一切都很清楚和其他广泛使用的注释.
我有理解概念的问题Ebean
.我已经使用spring for Java,很明显我们在xml文件中声明bean并且只是在代码中使用它们,我们可以在xml文件中轻松更改,只提供具体的实现,并且它将在我们使用的任何地方进行更改来自Id的bean AppContext
.
但我不明白在Android Annotations的情况下使用bean的目的,可能是我一般不理解DI.
@EBean
public class MyClass {
// ...
}
@EActivity
public class MyActivity extends Activity {
@Bean
MyClass myClass;
}
Run Code Online (Sandbox Code Playgroud)
我们在这有什么好处?我们只省略线路
myClass = new MyClass();
吗?
就这样 ?
另一个例子是Singletone范围.
@EBean(scope = Scope.Singleton)
public class MyClass {
// ...
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下我们有一些好处,我们不必手动创建实例,私有构造函数并检查它是否为null(延迟初始化).....
对于这种情况,我理解它可以节省时间,但在第一个例子中似乎没有任何好处,我们没有xml文件,我们可以在bean之间构建我们的bean依赖注释.
请帮我理解这个.
提前谢谢大家.
我是安卓的初学者。我想创建一个导航菜单抽屉。当我单击该图标时,它将打开。当我单击菜单项时,它会显示片段。但是当我单击菜单项时,我的导航抽屉不会自动关闭。每次我关闭导航抽屉以查看我的片段时。我不知道在哪里更改我的编码?在此附上我的 MainActivity.java,activity_main.xml。任何人请帮助我。
活动_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/drawer_layout"
tools:context="com.example.yuvi.navdrawermanual.MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textAlignment="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/main_msg"
android:textSize="20dp"
android:textAlignment="center"
android:text="@string/main_layout"/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/frame_container">
</FrameLayout>
</LinearLayout>
<android.support.design.widget.NavigationView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/main_drawer"
app:menu="@menu/navigation_menu"
android:layout_gravity="start">
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)
主活动.java
public class MainActivity extends AppCompatActivity {
private DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle mToggle;
private NavigationView navigationView;
private android.app.FragmentTransaction fragmentTransaction;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDrawerLayout=(DrawerLayout)findViewById(R.id.drawer_layout);
mToggle=new ActionBarDrawerToggle(this,mDrawerLayout,R.string.open,R.string.close);
navigationView=(NavigationView) findViewById(R.id.main_drawer);
mDrawerLayout.addDrawerListener(mToggle);
mToggle.syncState();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean …
Run Code Online (Sandbox Code Playgroud)