【问题标题】:Launching an activity from a fragment button press gets force close从片段按钮按下启动活动会强制关闭
【发布时间】:2017-10-28 11:06:41
【问题描述】:

是否有从片段按下按钮开始活动?我在 youtube 的视频中使用了完全相同的项目和变量名称。当我按下按钮时,我只是不断地强制关闭,有什么想法吗?这是我在 SubPage0.java 中的代码:

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

public class SubPage0 extends Fragment {


public SubPage0() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment

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


    Button button = (Button) rootView.findViewById(R.id.but2);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(getActivity(), ProjectInfo.class);
            getActivity().startActivity(intent);
        }
    });

    return rootView;
 }
 }

这是我的 fragment_thread_feed.xml 中的代码

<Button
    android:id="@+id/but2"
    android:layout_width="0dp"
    android:layout_height="61dp"
    android:layout_marginEnd="8dp"
    android:layout_marginStart="8dp"
    android:onClick="onClickListener"
    android:text="Button"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>

这是我想从该按钮跳入的活动类,文件名为 ProjectInfo.java

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.Toast;

public class ProjectInfo extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_project_info);


    Bundle bundle = getIntent().getExtras();
    if(bundle!=null){
        if(bundle.getString("some")!=null){
            Toast.makeText(getApplicationContext(),"data :" + bundle.getString("some"), Toast.LENGTH_SHORT).show();
            }

        }
    }

}

我真的是一个初学者,这些代码是我从教程和视频中收集和组合的。请帮忙:(

【问题讨论】:

  • 与问题分享您的崩溃日志(日志猫错误)
  • @mehul 我确实在 xml 中定义了活动(虽然不是类)。
  • 我会努力的,我什至还在学习如何登录@NileshRathod
  • 我在回答部分分享了我的 logcat,请查看@NileshRathod

标签: java android xml android-fragments


【解决方案1】:

我认为你的问题来自于

Intent intent = new Intent(getActivity(), ProjectInfo.class);
            getActivity().startActivity(intent);

另一件事

Bundle bundle = getIntent().getExtras();

您在哪里传递 Extras 值?哈哈

空指针异常。

【讨论】:

  • 我确实省略了这些行,仍然强制关闭,有什么想法吗?
  • 我已经发布了我的日志猫,希望你能帮助@PauloRodrigues
  • java.lang.IllegalStateException: 无法在父或祖先上下文中找到方法 onClickListener(View) 为 android:onClick 属性定义在视图类 android.support.v7.widget.AppCompatButton 与 id 'but2 ' 所以请看:stackoverflow.com/questions/38392359/… 在 xml 中定义 onClick 意味着您需要为特定视图定义它,但是您不能在该方法中有两个参数。
  • @KevinJonathan911 只需根据 pritesh ans 从您的按钮中删除 android:onClick="onClickListener"
  • @NileshRathod 我确实删除了它,现在当我点击按钮时什么也没发生
【解决方案2】:

只需从您的按钮中删除 android:onClick="onClickListener"

<Button
    android:id="@+id/but2"
    android:layout_width="0dp"
    android:layout_height="61dp"
    android:layout_marginEnd="8dp"
    android:layout_marginStart="8dp"
    android:text="Button"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    相关资源
    最近更新 更多