我使用過Android Studio 2.3 檢驗設備(天工 - 天工 - 6.0 Marshallow)。安卓:活動之間的導航
我是新來android應用程序開發.. 我有3活動(MainActivity,DisplayMessageActivity和ReadMessageActivity).screens。
我可以從MainActivity來回導航,MainActivity是作爲子活動的DisplayMessageActivity的ParentActivity,以及從DisplayMessageActivity到ReadMessageActivity的來源。
但我不能從導航回ReadMessageActivity的DisplayMessageActivity。 當我這樣做時,應用程序崩潰,錯誤「不幸的是,AppName已停止。」
這個程序能正常工作......只是要回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;
}
}
}
把你的堆棧跟蹤與例外這裏 –
我是新來的Android應用開發......請我怎麼從Studio中的堆棧跟蹤? – user3134352
@Luiz,我想我已經找到了 – user3134352