新活动未开放 [英] New activity not opening

查看:121
本文介绍了新活动未开放的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是一名意大利学生,使用最新版本的Android Studio和Android API 26(Android Oreo)开发Android应用程序。

I'm an italian student developing an Android application with the latest version of Android Studio and with Android API 26 (Android Oreo).

该应用程序非常简单:

1.主要活动,MySchoolSyllabus:它显示学校科目列表,由放置在res项目文件夹中的图像表示。

2.第二项活动,Materia(意思是主题):一旦用户点击主题图像,就需要打开此活动,显示另一个图像列表,以与上一个活动相同的方式表示该主题的主题。
3.最终活动,Argomento(意思是主题):一旦用户点击主题图片,就需要打开此活动,使用WebView显示主题课程(我将全部存储)共享Google云端硬盘帐户的课程。)

The application is very simple:
1. Main activity, "MySchoolSyllabus": it shows a list of school subjects, represented by images placed in the "res" project's folder.
2. Second activity, "Materia" (it means "subject"): once the user clicks on a subject image, this activity needs to be opened, showing another list of images, representing that subject's topics in the same way of the previous activity.
3. Final activity, "Argomento" (it means "topic"): once the user clicks on a topic image, this activity needs to be opened, showing the topic's lesson using a WebView (I'll store all lessons on a shared Google Drive account).

我使用ItemAdapter创建主题和主题列表。
现在,我不是Android编程方面的专家,所以我没有对所有内容进行编码...
但是当我点击MySchoolSyllabus活动中的图像时,第二个活动Materia不会被打开。

I use an ItemAdapter to create the lists of subjects and topics. Now, I'm not so much expert in Android programming, so I didn't code everything... But when I click on an image in "MySchoolSyllabus" activity, the second activity "Materia" doesn't get opened.

这就是我现在写的。

我该如何解决?

// MySchoolSyllabus.java

//MySchoolSyllabus.java

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;

import java.util.ArrayList;

public class MySchoolSyllabus extends AppCompatActivity implements Item_Adapter.ItemListener {

Item_Adapter item_adapter;
ArrayList<Integer> pass = new ArrayList<>();
ArrayList<String> nome = new ArrayList<>();
ListView list;

void CaricaDati () {
    nome.clear();
    nome.add("Italiano");
    nome.add("Matematica");
    nome.add("Arte");
    nome.add("Biologia");
    nome.add("Chimica");
    nome.add("Elettronica");
    nome.add("Filosofia");
    nome.add("Fisica");
    nome.add("Geografia");
    nome.add("Informatica");
    nome.add("Inglese");
    nome.add("Storia");
    pass.clear();
    pass.add(R.drawable.italiano_banner);
    pass.add(R.drawable.matematica_banner);
    pass.add(R.drawable.arte_banner);
    pass.add(R.drawable.biologia_banner);
    pass.add(R.drawable.chimica_banner);
    pass.add(R.drawable.elettronica_banner);
    pass.add(R.drawable.filosofia_banner);
    pass.add(R.drawable.fisica_banner);
    pass.add(R.drawable.geografia_banner);
    pass.add(R.drawable.informatica_banner);
    pass.add(R.drawable.inglese_banner);
    pass.add(R.drawable.storia_banner);
    item_adapter.notifyDataSetChanged();
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_my_school_syllabus);
    item_adapter = new Item_Adapter(this, R.layout.row, pass);
    item_adapter.setItemListener(MySchoolSyllabus.this);
    list = findViewById(R.id.lista);
    list.setAdapter(item_adapter);

    CaricaDati();
}

@Override
public void startNewIntent(int position) {
    Intent materia = new Intent(MySchoolSyllabus.this, Materia.class);
    materia.putExtra("materia", nome.get(position));
    startActivityForResult(materia, 10);
}
}

// Materia.java

//Materia.java

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;

import java.util.ArrayList;

public class Materia extends AppCompatActivity implements Item_Adapter.ItemListener {

Item_Adapter item_adapter;
ArrayList<Integer> pass = new ArrayList<>();
ArrayList<String> nome = new ArrayList<>();
ListView list;
String arg, materia;

//Here I didn't code topics yet in the switch. I'll do it the future. This is not important now.
void CaricaDati (String m) {
    nome.clear();
    switch (m) {
        case "Italiano":
            nome.clear();
            //
            pass.clear();
            //
            break;
        case "Matematica":
            nome.clear();
            //
            pass.clear();
            //
            break;
        case "Arte":
            nome.clear();
            //
            pass.clear();
            //
            break;
        case "Biologia":
            nome.clear();
            //
            pass.clear();
            //
            break;
        case "Chimica":
            nome.clear();
            //
            pass.clear();
            //
            break;
        case "Elettronica":
            nome.clear();
            //
            pass.clear();
            //
            break;
        case "Filosofia":
            nome.clear();
            //
            pass.clear();
            //
            break;
        case "Fisica":
            nome.clear();
            //
            pass.clear();
            //
            break;
        case "Geografia":
            nome.clear();
            //
            pass.clear();
            //
            break;
        case "Informatica":
            nome.clear();
            //
            pass.clear();
            //
            break;
        case "Inglese":
            nome.clear();
            //
            pass.clear();
            //
            break;
        case "Storia":
            nome.clear();
            //
            pass.clear();
            //
            break;
    }
    item_adapter.notifyDataSetChanged();
}

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

    materia = getIntent().getStringExtra("materia");

    item_adapter = new Item_Adapter(this, R.layout.row, pass);
    item_adapter.setItemListener(Materia.this);
    list = findViewById(R.id.lista);
    list.setAdapter(item_adapter);

    CaricaDati(materia);
}

@Override
public void startNewIntent(int position) {
    arg = nome.get(position);
    String dispensa = materia + "_" + arg;
    Intent argomento = new Intent(Materia.this, Argomento.class);
    argomento.putExtra("dispensa", nome.get(position));
    startActivityForResult(argomento, 10);
}
}

// Item_Adapter.java

//Item_Adapter.java

import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;

import java.util.List;

public class Item_Adapter extends ArrayAdapter<Integer> {

public interface ItemListener {
     void startNewIntent(int position);
}

ItemListener listener = null;

public void setItemListener(ItemListener item) {
    listener = item;
}

public Item_Adapter(@NonNull Context context, int resource, @NonNull List<Integer> objects) {
    super(context, resource, objects);
}

@NonNull
@Override
public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.row, parent, false);
    }

    LinearLayout linear = convertView.findViewById(R.id.materia);
    linear.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if(listener != null) listener.startNewIntent(position);
        }
    });

    ImageView imageView = convertView.findViewById(R.id.imageView);
    imageView.setBackgroundResource(getItem(position));

    return convertView;
}
}

// activity_my_school_syllabus.xml(与materia相同) XML布局)

//activity_my_school_syllabus.xml (is the same of materia XML layout)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:context="com.example.fabio.myschoolsyllabus.MySchoolSyllabus">

<ListView
    android:id="@+id/lista"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

</LinearLayout>

// row.xml

//row.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/materia"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >

<ImageButton
    android:layout_width="match_parent"
    android:id="@+id/imageView"
    android:layout_height="120dp"/>

</LinearLayout>

// AndroidManifest.xml

//AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.fabio.myschoolsyllabus">
<uses-permission android:name="android.permission.INTERNET" />
<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=".MySchoolSyllabus">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".Materia"></activity>
    <activity android:name=".Argomento"></activity>
</application>

</manifest>


推荐答案

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/materia"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >    
    <ImageButton
        android:id="@+id/imgButton"
        android:layout_width="match_parent"
        android:layout_height="120dp"/>    
</LinearLayout>

public class Item_Adapter extends ArrayAdapter<Integer> {

    public interface ItemListener {
         void startNewIntent(int position);
    }

    ItemListener listener = null;

    public void setItemListener(ItemListener item) {
        listener = item;
    }

    public Item_Adapter(@NonNull Context context, int resource, @NonNull List<Integer> objects) {
        super(context, resource, objects);
    }

    @NonNull
    @Override
    public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.row, parent, false);
        }

    ImageButton imgButton = convertView.findViewById(R.id.imageButton);

    imgButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if(listener != null) listener.startNewIntent(position);
        }
    });

    ImageView imageView = convertView.findViewById(R.id.imageView);
    imageView.setBackgroundResource(getItem(position));

    return convertView;
    }

}

这篇关于新活动未开放的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆