应用程序在“startActivity(intent);”上崩溃[复制]

Posted

技术标签:

【中文标题】应用程序在“startActivity(intent);”上崩溃[复制]【英文标题】:App crashes on "startActivity(intent);" [duplicate] 【发布时间】:2018-06-28 16:43:37 【问题描述】:

我想在“buttonn()”函数中使用的“inntent()”函数中启动一个新的Activity。该应用程序运行良好,但是当我单击按钮触发意图时,应用程序每次都会崩溃。我尝试了不同的方式来启动意图并更改了 Manifest 中的一些内容,但它仍然不起作用。

这是我的 MainActivity.java 代码:

public class MainActivity extends AppCompatActivity 

private BottomNavigationView bottomNavigationView;
ListView list;
private TextView textView;
ImageButton floatButton;
static String category;
static String name;
Button button;

ArrayList<String> aaaa;
ArrayList<String> bbbbb;
ArrayList<String> cccc;
ArrayList<String> dddd;


ArrayList<String> display;


public static int[] pics = R.drawable.no, R.drawable.yes;

Context context;

public void add() 


    aaaa.add("Example");
    aaaa.add("Example");
    aaaa.add("Example");

    bbbb.add("Example");
    bbbb.add("Example");
    bbbb.add("Example");

    cccc.add("Example");
    cccc.add("Example");

    dddd.add("Example");
    dddd.add("Example");
    dddd.add("Example");
    dddd.add("Example");



public void changeDisplay(ArrayList<String> a) 

    display.clear();

    for (int m = 0; m < a.size(); m++) 

        String ep = a.get(m);
        display.add(ep);

    



public void inntent() 

    Intent intent = new Intent(context, GoalsActivity.class);
    intent.putExtra("category", category);
    intent.putExtra("name", name);

    startActivity(intent);



public void butonn(View view) 


    inntent();





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

    button = (Button)findViewById(R.id.button);

    context = this;
    category = "aaaa";
    name = "";

    aaaa = new ArrayList<String>();
    bbbb = new ArrayList<String>();
    cccc = new ArrayList<String>();
    dddd = new ArrayList<String>();
    display = new ArrayList<>();


    add();
    changeDisplay(aaaa);





    list = (ListView)findViewById(R.id.list_view);
    list.setAdapter(new CustomAdapter(this, display, pics));



    bottomNavigationView = (BottomNavigationView)findViewById(R.id.BottomaNavigationBar);

    bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() 
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) 

            if (item.getItemId() == R.id.wg) 

                changeDisplay(aaaa);
                category = "aaaa";
                ((CustomAdapter) list.getAdapter()).notifyDataSetChanged();

             else if (item.getItemId() == R.id.qg) 

                changeDisplay(bbbb);
                category = "bbbb";
                ((CustomAdapter) list.getAdapter()).notifyDataSetChanged();

             else if (item.getItemId() == R.id.challenges) 

                changeDisplay(cccc);
                category = "cccc";
                ((CustomAdapter) list.getAdapter()).notifyDataSetChanged();

             else if (item.getItemId() == R.id.more) 

                changeDisplay(dddd);
                category = "dddd";
                ((CustomAdapter) list.getAdapter()).notifyDataSetChanged();

            

            return false;
        
    );

    floatButton = (ImageButton)findViewById(R.id.imageButton);

    floatButton.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View v) 
            Toast.makeText(MainActivity.this, "TEST", Toast.LENGTH_SHORT).show();
        
    );



这是我的清单:

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".SplashActivity"
        android:screenOrientation="portrait"
        android:theme="@style/SplashTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".MainActivity"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".GoalsActivity"
        android:screenOrientation="portrait"></activity>
</application>

【问题讨论】:

能不能把异常的logcat贴出来? 发布错误显示在 logcat 和您的 GoalsActivity 类中。 发布您的 xml 和崩溃日志。 【参考方案1】:

在 onCreate 方法中给出下面的代码。

button.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View v) 
       Intent intent = new Intent(MainActivity.this, GoalsActivity.class);
    intent.putExtra("category", category);
    intent.putExtra("name", name);

    startActivity(intent);

【讨论】:

this 如何在Intent 中工作?你能解释一下吗? 这个关键字代表当前活动。你也可以这样写 Intent intent = new Intent(MainActivity.this,GoalsActivity.class); intent.putExtra("category", category); intent.putExtra("name", name);开始活动(意图); 在这种情况下,您在匿名类中使用了this,因此this 将指向OnClickListener 而不是Activity。在 AS 中尝试此代码,它会显示错误。

以上是关于应用程序在“startActivity(intent);”上崩溃[复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有消息的情况下发送电子邮件意图?

android 怎么加载pdf

在 swift 中,如何在应用程序委托中实现一个变量,以便在应用程序的任何地方检索它?

MFP 应用程序在应用程序未运行时在推送通知期间点击时崩溃

在特定时间后终止在后台运行的应用程序?

mac 应用程序安装文件夹在哪