chinu1d Ответов: 1

Как запустить новую деятельность


Это мой основной класс..

package com.college.dypiet;

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.EditText;
import android.widget.Toast;

import static android.R.attr.password;

public class MainActivity extends AppCompatActivity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

public void onlogin(View view)
    {
        EditText editText=(EditText) findViewById(R.id.editText);
        EditText editText1=(EditText) findViewById(R.id.editText2);
        String message=editText.getText().toString();
        String message1=editText1.getText().toString();
      
        String type = "login";
        BackgroundWorker backgroundWorker = new BackgroundWorker(this);
        backgroundWorker.execute(type,message,message1);
    }
    }


Я создал еще один класс, то есть backgroundworker
вот его код...

package com.college.dypiet;


import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.content.SharedPreferences;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;

public class BackgroundWorker extends AsyncTask<String,Void,String> {
    Context context;
    AlertDialog alertDialog;
    BackgroundWorker (Context ctx) {
        context = ctx;
    }
    @Override
    protected String doInBackground(String... params) {
        String type = params[0];
        String login_url = "..#$^&%&&..../login.php";
        if(type.equals("login")) {
            try {
                String name = params[1];
                String password = params[2];
                URL url = new URL(login_url);
                HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
                httpURLConnection.setRequestMethod("POST");
                httpURLConnection.setDoOutput(true);
                httpURLConnection.setDoInput(true);
                OutputStream outputStream = httpURLConnection.getOutputStream();
                BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8"));
                String post_data = URLEncoder.encode("name","UTF-8")+"="+URLEncoder.encode(name,"UTF-8")+"&"
                        +URLEncoder.encode("password","UTF-8")+"="+ URLEncoder.encode(password,"UTF-8");
                bufferedWriter.write(post_data);
                bufferedWriter.flush();
                bufferedWriter.close();
                outputStream.close();
                InputStream inputStream = httpURLConnection.getInputStream();
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1"));
                String result="";
                String line="";
                while((line = bufferedReader.readLine())!= null) {
                    result += line;
                }
                bufferedReader.close();
                inputStream.close();
                httpURLConnection.disconnect();
                return result;
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
    @Override
    protected void onPreExecute() {
        alertDialog = new AlertDialog.Builder(context).create();
        //alertDialog.setTitle("Login Status");
    }

    @Override
    protected void onPostExecute(String result) {
        alertDialog.setMessage(result);
        alertDialog.show();
        Intent intent=new Intent(this,Teacher.class);//error here help!!

    }

    @Override
    protected void onProgressUpdate(Void... values) {
        super.onProgressUpdate(values);
    }
}


Что я уже пробовал:

логин работает отлично .
Как я могу запустить новую деятельность (ее название 'Teacher.class") использование намерения.
Когда я пытаюсь использовать Intent, он говорит: "не удается разрешить конструктор...."
пожалуйста помочь

Richard MacCutchan

Конструктор не помечен public.

chinu1d

все еще давая ту же ошибку

chinu1d

Все еще не работает

David Crow

Вы не вызывали startActivity () или startActivityForResult (). Вы получаете ошибку во время компиляции или выполнения? Возникает ли исключение?

chinu1d

ну это ошибка времени компиляции
startActivity не запрашивает по какой-то причине, и когда я пишу его самостоятельно, он дает "не может разрешить метод" .. ошибка

David Crow

Что значит "не побуждать"? Метод startActivity () относится к классу Context. Попытка использовать его в AsyncTask. onPostExecute () вырвана из контекста. Попробуйте что-нибудь вроде:

BackgroundWorker (контекст ctx)
{
это.контекст = СТХ.getApplicationContext();
}

защищенная пустота onPostExecute()
{
...
контекст. startActivity (намерение);
}

Richard MacCutchan

Вы обновили это, но я не вижу никакой новой информации.

1 Ответов

Рейтинг:
7

Richard MacCutchan

Взгляните на AsyncTask | Разработчики Android[^] чтобы посмотреть, как это можно сделать.