【发布时间】:2021-11-04 21:15:56
【问题描述】:
更新:新手错误。我没有将片段类型更改为“MenuFragment”,它仍然是来自其他活动的“LoginFragment”。是的,我复制粘贴过来了,没有正确检查。。谢谢大家的帮助。
我正在为一项作业创建一个简单的“登录”屏幕,但似乎无法开始我的下一个活动。 “登录”按钮仅用于读取已输入的用户名和密码文本,如果正确,则启动“MenuActivity”。相反,它只是重新启动相同的活动(或者至少动画就像活动已重新启动一样)。
我正在从片段中调用 startActivity(),但我相信我的语法在那里是正确的。
这里是代码。
主片段 onCreateView 方法
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_login, container, false);
// get references for all major ui elements
welcomeText = (TextView) view.findViewById(R.id.welcomeText);
username = (EditText) view.findViewById(R.id.usernameEditText);
password = (EditText) view.findViewById(R.id.pinEditText);
loginButton = (Button) view.findViewById(R.id.loginButton);
loginButton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
// if username and password are in the user list
if(dataset.userLogin(username.getText().toString(), password.getText().toString()))
{
// change activity to main menu activity
Intent intent = new Intent(getActivity(), MenuActivity.class);
startActivity(intent);
}
else
{
Toast.makeText(view.getContext(), "Error: Username or password is incorrect", Toast.LENGTH_SHORT).show();
}
}
});
return view;
}
XML 文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.pracgrader">
<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/Theme.PracGrader">
<activity
android:name=".MenuActivity"
android:exported="true" />
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
菜单活动:
public class MenuActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
// assign login fragment
FragmentManager fm = getSupportFragmentManager();
LoginFragment frag = (LoginFragment) fm.findFragmentById(R.id.menuFragmentContainer);
if(frag == null)
{
frag = new LoginFragment();
fm.beginTransaction()
.add(R.id.menuFragmentContainer, frag)
.commit();
}
}
}
菜单片段:
public class MenuFragment extends Fragment {
private Dataset dataset;
private Button userListButton;
private Button practicalListButton;
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
// TODO: Rename and change types of parameters
private String mParam1;
private String mParam2;
public MenuFragment() {
// Required empty public constructor
}
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @param param1 Parameter 1.
* @param param2 Parameter 2.
* @return A new instance of fragment MenuFragment.
*/
// TODO: Rename and change types and number of parameters
public static MenuFragment newInstance(String param1, String param2) {
MenuFragment fragment = new MenuFragment();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dataset = Dataset.getInstance();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_menu, container, false);
userListButton = (Button) view.findViewById(R.id.userListButton);
practicalListButton = (Button) view.findViewById(R.id.practicalListButton);
userListButton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
}
});
practicalListButton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
}
});
return view;
}
}
请建议您希望看到的任何其他代码。任何帮助是极大的赞赏。谢谢。
【问题讨论】:
-
您能否在启动活动时检查日志以查看注销时是否有任何崩溃或错误。
-
不幸的是没有错误或崩溃
-
请同时提供MenuActivity的代码
-
在这里分享你的 MenuActivity.class。
-
在这里分享你的 MenuActivity.class
标签: java android android-studio android-fragments start-activity