如何解决Android Studio-无法使用意图启动新活动
我正在使用Android Studio应用,并且我刚刚创建了带有三个选项的菜单栏。 现在,我在尝试选择菜单项时尝试加载新的活动。 我遇到的问题:单击菜单项时,它会打开一个空白活动,而不是我选择的片段。
这就是我所做的:
- 为每个相应的菜单项创建java类和XML页面。
我将仅显示我的主要活动和我创建的新活动页面之一的代码。
friendListFragment.java
This is a new java class I created
package com.example.assignment1;
import android.text.Layout;
import android.view.LayoutInflater;
import android.view.View;
import android.os.Bundle;
import android.view.ViewGroup;
import android.view.View;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
public class friendListFragment extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
然后在我的主要活动文件中,我有以下内容
package com.example.assignment1;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;
import android.os.Bundle;
import android.view.View;
import android.view.Menu;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
import com.google.android.material.navigation.NavigationView;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import com.google.android.material.navigation.NavigationView;
public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
private DrawerLayout drawer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolBar);
setSupportActionBar(toolbar);
drawer = findViewById(R.id.drawer_layout);
NavigationView navigationView = findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this,drawer,toolbar,R.string.navigation_drawer_open,R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item ){
Intent intent = null;
switch (item.getItemId()){
case R.id.viewFriendList:
intent = new Intent(this,friendListFragment.class);
startActivity(intent);
break;
case R.id.toDoList:
intent = new Intent(this,toDoListFragment.class);
startActivity(intent);
break;
case R.id.eventList:
intent = new Intent(this,eventFragment.class);
startActivity(intent);
break;
default:
return super.onOptionsItemSelected(item);
}
drawer.closeDrawer(GravityCompat.START);
return true;
}
@Override
public void onBackPressed() {
if (drawer.isDrawerOpen(GravityCompat.START)){
drawer.closeDrawer(GravityCompat.START);
}
else
{
super.onBackPressed();
}
}
}
当我不单击任何菜单选项时,我是从一个空活动中创建的,菜单栏正确显示。另外,我认为错误在于onNavigationItemSelected
函数中。
这是我在logcat中遇到的错误
08-14 15:45:27.834 6816-6833/com.example.assignment1 E/Surface: getSlotFromBufferLocked: unknown buffer: 0xae613460
这是我的清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.assignment1">
<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=".MainActivity"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".friendListFragment"></activity>
<activity android:name=".toDoListFragment"></activity>
<activity android:name=".eventFragment"></activity>
</application>
</manifest>
基本上,当我单击菜单栏中的一个选项时,它将加载一个空白页面
解决方法
在您的 friendListFragment 中,您没有设置 ContentView 布局,这就是为什么它会提供空白页的原因
public class friendListFragment extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set your contentView like this
setContentView(R.layout.activity_friend_list_fragment);
}
}
注意:activity_friend_list_fragment仅是您需要 用您的布局文件替换
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。