当前位置: 首页 > 知识库问答 >
问题:

如何使用活动中的按钮跳转到同一活动中的信息?

荣沈义
2023-03-14

我想知道是否可以在活动中创建一个按钮以向下滚动视图跳转到相应的信息。有点像:

Button 1
Button 2
Button 3

paragraph 1
paragraph 2
paragraph 3

因此,通过选择按钮1将您带到第1段的开头,依此类推。通过这种方式,用户不必向下滚动即可找到相关的段落/信息或启动新活动。(类似于一些网页,其中有很多信息,并在页面顶部带有标题,以将您带到同一页面上的相关信息。

好吧,这是我迄今为止尝试过的:

final View rootView = inflater.inflate(R.layout.fragment_snakes, container, false);

Button button = (Button) rootView.findViewById(R.id.Button1);
button.setOnClickListener(new OnClickListener() {
    public void onClick(final View v) {
        mScrollView = (ScrollView) rootView.findViewById(R.string.TextView1);
        mScrollView.smoothScrollTo(R.id.TextView1, 0);
    }
});

然后我得到这个错误:

  11-05 09:28:43.722: E/AndroidRuntime(30741): java.lang.NullPointerException
  11-05 09:28:43.722: E/AndroidRuntime(30741):  at     com.test.testpark.StestFragment$1.onClick(StestFragment.java:34)
  11-05 09:28:43.722: E/AndroidRuntime(30741):  at   android.view.View.performClick(View.java:4637)
  11-05 09:28:43.722: E/AndroidRuntime(30741):  at android.view.View$PerformClick.run(View.java:19422)
  11-05 09:28:43.722: E/AndroidRuntime(30741):  at android.os.Handler.handleCallback(Handler.java:733)
  11-05 09:28:43.722: E/AndroidRuntime(30741):  at android.os.Handler.dispatchMessage(Handler.java:95)
  11-05 09:28:43.722: E/AndroidRuntime(30741):  at android.os.Looper.loop(Looper.java:136)
  11-05 09:28:43.722: E/AndroidRuntime(30741):  at android.app.ActivityThread.main(ActivityThread.java:5586)
  11-05 09:28:43.722: E/AndroidRuntime(30741):  at java.lang.reflect.Method.invokeNative(Native Method)
  11-05 09:28:43.722: E/AndroidRuntime(30741):  at java.lang.reflect.Method.invoke(Method.java:515)
  11-05 09:28:43.722: E/AndroidRuntime(30741):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
  11-05 09:28:43.722: E/AndroidRuntime(30741):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
  11-05 09:28:43.722: E/AndroidRuntime(30741):  at dalvik.system.NativeStart.main(Native Method)

有没有我可以跟着学的教程?< br >有什么建议吗?

编辑

  11-05 10:41:36.770: E/AndroidRuntime(3630): java.lang.NullPointerException
  11-05 10:41:36.770: E/AndroidRuntime(3630):   at com.test.testpark.StestFragment$1.onClick(StestFragment.java:34)
  11-05 10:41:36.770: E/AndroidRuntime(3630):   at android.view.View.performClick(View.java:4637)
  11-05 10:41:36.770: E/AndroidRuntime(3630):   at android.view.View$PerformClick.run(View.java:19422)
  11-05 10:41:36.770: E/AndroidRuntime(3630):   at android.os.Handler.handleCallback(Handler.java:733)
  11-05 10:41:36.770: E/AndroidRuntime(3630):   at android.os.Handler.dispatchMessage(Handler.java:95)
  11-05 10:41:36.770: E/AndroidRuntime(3630):   at android.os.Looper.loop(Looper.java:136)
  11-05 10:41:36.770: E/AndroidRuntime(3630):   at android.app.ActivityThread.main(ActivityThread.java:5586)

共有2个答案

王高超
2023-03-14
mButton1.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(final View v) {
    mScrollView.smoothScrollTo(0, mParagraph1.getTop());                
  }
}
翟誉
2023-03-14

Android doc for smoothScrollTo(int, int) :

像scrollTo(int,int),但是平滑滚动而不是立即滚动。

参数:x 在 X 轴上滚动的位置 y 在 Y 轴上滚动的位置

所以你不应该用Textview id (R.id.TextView1)而是textview position,大概是这样的:

  final View rootView = inflater.inflate(R.layout.fragment_snakes, container, false);

  Button button = (Button) rootView.findViewById(R.id.Button1);
  TextView paragraph1 = (TextView) rootView.findViewById(R.id.TextView1);
  ScrollView scrollView = (ScrollView) rootView.findViewById(R.id.ScrollView);

  button.setOnClickListener(new OnClickListener() {
      public void onClick(final View v) {
          scrollView.smoothScrollTo(0,paragraph1.getTop());
      }
  });
 类似资料:
  • 这是我的问题: 我想在一个活动中实现两个按钮。一个是计算BMI,另一个是检查时间。我希望用户能在同一个活动中看到两个按钮,这也取决于他们想做什么。(这些功能不是同时工作的,而是分开的。另外,我在这两个活动中都实现了返回主页的按钮。) 在Android模拟器中,消息来自“应用程序继续停止”。 以下是主要活动。java文件: 谢谢! 这些消息是我按下导致应用程序停止的按钮后的stacktrace:

  • 嗨,有人能有一个关于如何使用Fab做一个新活动的建议,比如如果你点击Fab按钮,它将显示一个侧过渡说你好世界?实际上我正在创建一个聊天应用程序,我想用我的联系人取代“你好世界”。 我得到了一个关于我提到的浮动操作按钮的参考链接或源代码。我所做的是删除列表视图,这样屏幕上只有fab按钮,http://www.myandroidsolutions.com/2015/01/01/android-floa

  • 我正在写一个Android应用程序,有Java和静态编程语言活动。我希望从静态编程语言移动到Java,已经完成了,现在我希望回到静态编程语言活动,我找不到具体的代码。 我的应用程序名称是starter,Kotlin活动是MainActivity。kt和java类是face_detect。JAVA我已经试过:` ` 我希望单击face_detect上的按钮。java,这将把我带到MainActivi

  • 在我的项目中,需求是创建一个回收器视图->卡片视图在活动a中,当信息被填满并在活动B中按下按钮时。

  • 我有一个玩家活动和浮动玩家(服务),点击后退按钮后,玩家活动关闭,浮动玩家开始行动,当我点击浮动玩家时,我想回到玩家活动,但没有再次运行创建方法。 我在StackOver Flow中读到了很多解决方案,特别是使用FLAG\u ACTIVITY\u CLEAR\u TOP和FLAG\u ACTIVITY\u SINGLE\u TOP标志,或者将android:launchMode=“singleTa

  • 问题内容: 我的Android应用有很多按钮。 我的main.xml布局具有三个按钮。 我知道如何使用按钮从一个活动转到另一个活动,但是我不知道如何在一个活动上具有多个按钮,每个按钮启动的活动与另一个活动不同。 例 Main.xml Button1 Button2 Main2.xml 由button1启动 About.xml 由Button2启动 我如何使main.java文件做到这一点? 问题答