如何在Android应用用户界面中实现“向下钻取”导航?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (15)

我正在尝试学习如何在Android中做什么,而且我不确定构建接口的最佳方式。

我一直致力于移植iPhone应用程序,该应用程序使用导航控制器和表格视图来查看不同部分:基本上,有人触摸表格中的单元格,然后向下钻取到另一个表格。当他们触摸那张桌子上的一个单元格时,它会钻入一个显示信息的webview。

提问于
用户回答回答于

所以在iphone上钻取时,我想你的意思是当用户触摸列表行并从右侧滑动新的视图时,大多数情况下它的顶部都有一个导航栏,以便为用户回去的选择?

Android处理这种情况的方式就是简单地开始一个新的活动。所以当你点击一个listItem时,你将拥有你的'Books'ListActivity,你将定义一个新的intent来启动你的'Chapters'ListActivity等等。iPhone顶部的导航栏并非Android中的标准用户界面,因为大多数人都会看到专用的“后退”键作为返回预览屏幕的方式。

这是你如何开始一个意图,如果你以前没有看到它:

Intent chaptersIntent = new Intent(this, Chapters.class);
this.startActivity(chaptersIntent);

编辑::示例代码我会做这样的事情:

public class Books extends ListActivity {

private String[] mBooks = new String[]{ "Book1", "Book2", "Book3", "Book4" };

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

    ArrayAdapter<String> booksAdapter = new ArrayAdapter<String>(this, 
            android.R.layout.simple_list_item_1, 
            android.R.id.text1, 
            mBooks);

    this.setListAdapter(booksAdapter);

}

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);

    Intent mViewChaptersIntent = new Intent(this, Chapters.class);
    mViewChaptersIntent.putExtra("BookName", mBooks[position]);
    startActivity(mViewChaptersIntent);
}

}

你可以将本书的id作为额外内容传递给Intent,然后在onCreate方法中获得额外的章节活动:

    @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Bundle extras = getIntent().getExtras();
    if(extras != null) {
        String bookId = extras.getString("BookName");
    }
}

最后确保所有新的活动都添加到你的AndroidManifest.xml文件中:

<activity android:name=".YourClassName"
  android:label="@string/activity_name"
  >
</activity>
用户回答回答于

扫码关注云+社区