我的代码完美无缺:每次点击导航抽屉中的项目时,都会选择该项目.
当然我想用默认片段(home)启动应用程序,但导航抽屉没有选择项目.如何以编程方式选择该项目?
public class BaseApp extends AppCompatActivity {
//Defining Variables
protected String LOGTAG = "LOGDEBUG";
protected Toolbar toolbar;
protected NavigationView navigationView;
protected DrawerLayout drawerLayout;
private DateManager db = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.base_layout);
navigationView = (NavigationView) findViewById(R.id.navigation_view);
// set the home/dashboard at startup
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frame, new DashboardFragment());
fragmentTransaction.commit();
setNavDrawer();
}
private void setNavDrawer(){
// Initializing Toolbar and setting it as the actionbar
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
//Initializing NavigationView
//Setting Navigation View Item …Run Code Online (Sandbox Code Playgroud) 我希望有一个带有按钮的2x2网格.这只是ICS所以我试图使用给定的新GridLayout.
这是我的布局的XML:
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/favorites_grid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00ff00"
android:rowCount="2"
android:columnCount="2">
<Button
android:text="Cell 0"
android:layout_row="0"
android:layout_column="0"
android:textSize="14dip" />
<Button
android:text="Cell 1"
android:layout_row="0"
android:layout_column="1"
android:textSize="14dip" />
<Button
android:text="Cell 2"
android:layout_row="1"
android:layout_column="0"
android:textSize="14dip" />
<Button
android:text="Cell 3"
android:layout_row="1"
android:layout_column="1"
android:textSize="14dip" />
</GridLayout>
Run Code Online (Sandbox Code Playgroud)
问题是我的视图不能均匀地拉伸到每一行.这会在GridLayout的右侧产生大量额外空间.
我试过设置,layout_gravity="fill_horizontal"但只适用于行的最后一个视图.这意味着Cell 1一直延伸为Cell 0提供足够的空间.
关于如何解决这个问题的想法?
我EditTexts在Android中有5个用户输入.我想知道我是否可以有一个方法来检查所有5,EditTexts如果它们是null.有没有办法做到这一点?
我正在寻找一种滚动方式以RecyclerView在顶部显示所选项目的方法.
在ListView我能够通过这样做,scrollTo(x,y)并获得了需要为中心元素的顶部.
就像是:
@Override
public void onItemClick(View v, int pos){
mylistView.scrollTo(0, v.getTop());
}
Run Code Online (Sandbox Code Playgroud)
问题是RecyclerView当使用它的scrollTo方法时返回错误
RecyclerView不支持滚动到绝对位置
如何滚动a RecyclerView以将所选项目放在视图顶部?
自Android Studio更新1.2 Beta以来,我的logcat出现问题.当我运行我的应用程序时,它会像通常那样记录所有内容,然后我会发现我的应用程序崩溃了应用程序说:不幸的是,游戏已停止.
几秒钟后,android关闭了该消息.当发生这种情况时,我的logcat也会被完全清除,这意味着我几乎无法随时读取错误.我确实找到了一些关于缓冲区的信息,但似乎除了我怀疑是问题之外,Android Studio没有增加它的选项.
可能有用的东西是,在它清除并填充进程更改为Android.process.core并且我在logcat中获得的消息是:
04-13 10:28:13.394 12259-12265/android.process.acore D/dalvikvm?
Debugger has detached; object registry had 1 entries
Run Code Online (Sandbox Code Playgroud)
编辑:我确实读过有关断点的内容,因此禁用了应用程序 - 构建,执行,部署 - 调试器中断点的应用程序,但它没有任何效果.
我将使用oAuth从谷歌获取邮件和联系人.我不想每次都要求用户登录以获取访问令牌和密码.根据我的理解,我需要将它们与我的应用程序一起存储在数据库中SharedPreferences.但我有点担心安全问题.我读过你可以加密和解密令牌,但是攻击者很容易反编译你的apk和类并获得加密密钥.
在Android中安全存储这些令牌的最佳方法是什么?
我ActionBarActivity有NavigationDrawer和使用support_v7 Toolbar的动作条.在我的一个片段工具栏中有自定义视图.在其他片段中Toolbar应显示标题.
如何Toolbar从片段中获取自定义实例?我可以使用ActionBar getActivity().getActionBar(),但是如果我调用setTitle()这个实例ActionBar它什么都不做.
UPD:
就我而言
((ActionBarActivity) getActivity()).getSupportActionBar().setTitle();
(正如MrEngineer13所说)在第一次片段创建时不起作用,因为我从onHiddenChanged()调用它.现在我向onCreateView()添加更多一个,它工作正常.
android android-fragments android-actionbar android-support-library android-toolbar
我有一个带有图像的imageView,在我要放置文本的图像上.我怎样才能做到这一点?
编辑: 这个问题是针对已弃用的sherlock操作栏.现在应该使用Android支持库
我添加了一个名为share for action的操作栏菜单选项fragment,但是没有捕获选择事件
我这样添加它
@Override
public void onCreateOptionsMenu (Menu menu, MenuInflater inflater) {
MenuItem item = menu.add(0, 7,0, R.string.share);
item.setIcon(R.drawable.social_share).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}
Run Code Online (Sandbox Code Playgroud)
试图捕捉它在这两个fragment和fragment activity类似
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 7:
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("text/plain");
share.putExtra(Intent.EXTRA_TEXT, "I'm being sent!!");
startActivity(Intent.createChooser(share, "Share Text"));
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Run Code Online (Sandbox Code Playgroud)
我有setHasOptionsMenu(true);在onCreate().
我正在使用工具栏作为活动中的操作栏.我正在尝试将该方法添加getActionBar().setDisplayHomeAsUpEnabled(true);到Activity.java文件中以用于较旧设备的向上导航.
该方法在Android Studio中生成以下错误消息:
方法调用可能会产生java.lang.NullPointerException
工具栏上的向上导航在较新的设备上运行良好...现在我正在试图弄清楚如何确保它适用于旧设备.请指教.
来自build.gradle:
dependencies {
compile "com.android.support:appcompat-v7:22.1.0"
}
Run Code Online (Sandbox Code Playgroud)
来自AndroidManifest.xml:
android:theme="@style/Theme.AppCompat.NoActionBar.FullScreen"
Run Code Online (Sandbox Code Playgroud)
来自styles.xml
<style name="Theme.AppCompat.NoActionBar.FullScreen" parent="AppTheme">
<item name="android:windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
Run Code Online (Sandbox Code Playgroud)
来自Activity.java
public class CardViewActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.cardviewinput);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
if (toolbar != null) {
// Up navigation to the parent activity for 4.0 and earlier
getActionBar().setDisplayHomeAsUpEnabled(true);
toolbar.setNavigationIcon(R.drawable.ic_action_previous_item);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)