0

单击按钮后,我试图在我的应用程序的 MainActivity 中显示一个非常简单的 Snackbar。此按钮还导致新活动的开始。但是在我点击它之后,没有 Snackbar 显示并且新的 Activity 开始了。我的 MainActivity 是一个 RelativeLayout,我不太想将它更改为 CoordinatorLayout。

<RelativeLayout
 <TextView
        android:id="@+id/tvReceived"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Messages Received"
        android:textSize="25sp"
        android:gravity="center"
        android:textStyle="bold"
        android:textAllCaps="false"
        android:textColor="#3079ab"
        android:layout_marginTop="10dp"/>

    <LinearLayout
        android:id="@+id/linearMain"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/tvReceived"
        android:layout_marginTop="7dp"
        android:layout_marginBottom="50dp">
        <FrameLayout
            android:id="@+id/receivedList"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
        </FrameLayout>
    </LinearLayout>

    <Button
        android:id="@+id/newMessage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Message"
        android:textAllCaps="false"
        android:textSize="16sp"
        android:layout_alignParentBottom="true"
        android:layout_alignEnd="@+id/linearMain"
        android:layout_marginBottom="32dp" />
</RelativeLayout>

Snackbar 的 Java 代码:

Button btnNewSms = (Button) findViewById(R.id.newMessage);
btnNewSms.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
      Snackbar mySnackbar = Snackbar.make(v, R.string.new_message, Snackbar.LENGTH_LONG);
      mySnackbar.show();
      Intent intent = new Intent(MainActivity.this, ComposeActivity.class);
      startActivity(intent);
     }
});

怎么了?提前致谢!

4

1 回答 1

4

注释您的意图并运行代码,Activity当单击按钮时启动,您看不到Snackbar. 您可以通过以下方式在您的Activity内部单击按钮打开Snackbar

 public void showMsgSnack(String msg) {

        snackbar = Snackbar.make(getCurrentFocus(), "Your Message here", Snackbar.LENGTH_INDEFINITE).setAction("Open", new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    //Your Intent here
            }
        });
        snackbar.show();
    }

尝试让我知道它是否有效

于 2016-04-26T05:37:05.270 回答