我正在使用Android Studio 2.3 测试设备(Tecno-Tecno-6.0 Marshallow)。
我是Android应用程序开发的新手.. 我有3个Activity(MainActivity,DisplayMessageActivity和ReadMessageActivity).screens。
我可以从MainActivity来回导航,MainActivity是DisplayMessageActivity的parentActivity,它是子活动,从DisplayMessageActivity到ReadMessageActivity。
但我无法从ReadMessageActivity导航回DisplayMessageActivity。 当我这样做时,应用程序崩溃并出现错误" 不幸的是,AppName已停止。"
此应用程序正常运行...除了第3个活动在返回第2个活动时崩溃应用程序。
请参阅下面的AndroidManifest.xml和不同的Activity.xml代码,并帮助我解决这个挑战。 提前谢谢。
的AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<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">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".DisplayMessageActivity"
android:parentActivityName=".MainActivity"
android:label="@string/welcome_screen_title"
android:finishOnTaskLaunch="true"
android:launchMode="standard">
<!-- The meta-data tag is required if you support API level 15 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
</activity>
<activity android:name=".ReadMessageActivity"
android:parentActivityName=".DisplayMessageActivity"
android:label="@string/question_screen"
android:allowTaskReparenting="true">
<!-- The meta-data tag is required if you support API level 15 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".DisplayMessageActivity" />
</activity>
</application>
MainActivity.xml
package com.example.examinationportal;
import android.content.Intent;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
String message = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
/** Called when the user taps the Send button */
public void loginUser(View login) {
Intent intent = new Intent(this, DisplayWelcomeScreen.class);//start the ui
//initialize the status bar textview control
TextView statusBar = (TextView) findViewById(R.id.textViewStatusMsg);
//initialize textViewLogin
TextView titleLogin = (TextView) findViewById(R.id.textViewLogin) ;
titleLogin.setTextColor(0x01060013);//colors
EditText un = (EditText) findViewById(R.id.editTextUsername);//username field
EditText pw = (EditText) findViewById(R.id.editTextPassword);//password field
String username = un.getText().toString();//convert username and password to string and parse
String password = pw.getText().toString();//them to variables
//check the login
if(username.equals("admin") && password.equals("admin")){//compare the username and password entered by user with the defaul
message = "Welcome"; //message for successful login
String msg = "Login Successful!";//this message will be displayed on the status bar
statusBar.setTextColor(Color.parseColor("#ff0000"));
statusBar.setBackgroundColor(Color.parseColor("#d3d3d3"));
statusBar.setText(msg);//disp the msg for unsuccessful login
Bundle bundle = new Bundle();//bundle the message and parse it to the next activity
bundle.putString("dispMsg", message);//bundle the message using the variable dispMsg
intent.putExtras(bundle);
startActivity(intent);
}else{
message = "Invalid Login! You are not authorised to view this page...";
//statusBar.setText(null);//status bar textview
//statusBar.setTextColor(getResources().getColor(R.color.colorAccent));
//statusBar.setTextColor(ContextCompat.getColor(context, R.color.colorAccent));
statusBar.setTextColor(Color.parseColor("#ff0000"));
statusBar.setBackgroundColor(Color.parseColor("#d3d3d3"));
statusBar.setText(message);//disp the msg for unsuccessful login
}
}
}
DisplayMessageActivity.xml
package com.example.examinationportal;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class DisplayWelcomeScreen extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_welcome_screen);
// Get the Intent that started this activity and extract the string
Intent intent = getIntent();
Bundle bundle = getIntent().getExtras();
String showMsg = bundle.getString("dispMsg");
// Capture the layout's TextView and set the string as its text
TextView textView = (TextView) findViewById(R.id.textViewWelcome);
textView.setText(showMsg);
//disable some controls when user is not logged in
View buttonCSS342 = findViewById(R.id.buttonCSS342);
View buttonCSS352 = findViewById(R.id.buttonCSS352);
View buttonCSS354 = findViewById(R.id.buttonCSS354);
View buttonCSS356 = findViewById(R.id.buttonCSS356);
View buttonCSS381 = findViewById(R.id.buttonCSS381);
View buttonPCR362 = findViewById(R.id.buttonPCR362);
}
public void courseClicked(View v) {
String course = "";
Intent intent = new Intent(this, CSS_342_Questions.class);
int qNum = 0;
switch (v.getId()){
case R.id.buttonCSS342:
course = "CSS 342";
qNum=1;
break;
case R.id.buttonCSS352:
course = "CSS 352";
qNum=1;
break;
case R.id.buttonCSS354:
course = "CSS 354";
qNum=1;
break;
case R.id.buttonCSS356:
course = "CSS 356";
qNum=1;
break;
case R.id.buttonCSS381:
course = "CSS 381";
qNum=1;
break;
case R.id.buttonPCR362:
course = "PCR 362";
qNum=1;
break;
}
Bundle bundle = new Bundle();
bundle.putString("dispCode", course);
bundle.putInt("qNum", qNum);
intent.putExtras(bundle);
startActivity(intent);
}
}
ReadMessageActivity.xml
package com.example.examinationportal;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.TextView;
import org.w3c.dom.Text;
public class CSS_342_Questions extends AppCompatActivity {
public int qNum = 0;
public String showCode ="";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_css_342__questions);
// Get the Intent that started this activity and extract the string
Intent intent = getIntent();
Bundle bundle = getIntent().getExtras();
showCode = bundle.getString("dispCode");
qNum = bundle.getInt("qNum");
TextView textView = (TextView) findViewById(R.id.textViewCourseTitle);
TextView qn = (TextView)findViewById(R.id.textViewQn);
TextView q = (TextView)findViewById(R.id.textViewQ);
WebView ans = (WebView) findViewById(R.id.textViewAns);
ans.getSettings().setLoadsImagesAutomatically(true);
ans.getSettings().setJavaScriptEnabled(true);
ans.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
ans.getSettings().setBuiltInZoomControls(true);
View buttonPrev = findViewById(R.id.buttonPrevious);
View buttonNext = findViewById(R.id.buttonNext);
if(showCode.equals("CSS 342") && qNum == 1) {
String showTitle = "Safety Management and Loss Prevention";
textView.setText(showTitle);// Capture the layout's TextView and set the string as its text
qn.setText(Questions.css342_q1[0]);
q.setText(Questions.css342_q1[1]);
ans.loadUrl("file:///android_asset/css342_q1.html");
buttonPrev.setVisibility( View.INVISIBLE);
qNum = 1;
}else if(showCode.equals("CSS 352") && qNum == 1){
String showTitle = "Crime and Crime Theories";
// Capture the layout's TextView and set the string as its text
textView.setText(showTitle);
qn.setText(Questions.css352_q1[0]);
q.setText(Questions.css352_q1[1]);
ans.loadUrl("file:///android_asset/css352_q1.html");
buttonPrev.setVisibility(View.INVISIBLE);
qNum = 1;
}
}
}
答案 0 :(得分:0)
更新AndroidManifest.xml
,如下所示:
.................
.........................
<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">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".DisplayWelcomeScreen"
android:label="@string/welcome_screen_title">
</activity>
<activity android:name=".CSS_342_Questions"
android:label="@string/question_screen">
</activity>
</application>
...............
.......................
Clean
和Run
您的申请。希望它会起作用〜