Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.RuntimeException:Can';t在未调用Looper.prepare()的线程内创建处理程序为什么?_Java_Android_Multithreading - Fatal编程技术网

java.lang.RuntimeException:Can';t在未调用Looper.prepare()的线程内创建处理程序为什么?

java.lang.RuntimeException:Can';t在未调用Looper.prepare()的线程内创建处理程序为什么?,java,android,multithreading,Java,Android,Multithreading,当我运行第一个活动时,没有出现错误 但是当我尝试运行第二个活动错误时 “java.lang.RuntimeException:无法在未调用Looper.prepare()的线程内创建处理程序” 无活套问题的活动 package com.example.androidnotizer; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.State

当我运行第一个活动时,没有出现错误 但是当我尝试运行第二个活动错误时 “java.lang.RuntimeException:无法在未调用Looper.prepare()的线程内创建处理程序”

无活套问题的活动

package com.example.androidnotizer;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;


public class LoginActivity extends Activity {

public static final String URL="jdbc:mysql://10.0.2.2/notizer";
public static final String USER="root";
public static final String PASSWORD="apple";
public static final String Driver_Class="com.mysql.jdbc.Driver";
public static final int RED=-65536;

Handler handler = new Handler();
Thread background;
String uid,pass;
int count=0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    TextView tv = (TextView)findViewById(R.id.textView4);
    tv.setText("");
    Button login = (Button) findViewById(R.id.button1);
    login.setOnClickListener(new OnClickListener(){
        @Override
        public void onClick(View arg0) {
            EditText et1 = (EditText)findViewById(R.id.editText1);
            EditText et2 = (EditText)findViewById(R.id.editText2);
            uid=et1.getText().toString();
            pass=et2.getText().toString();
            TextView tv = (TextView)findViewById(R.id.textView4);
            tv.setText("");
            count=0;
            doLogin();
        }
    });

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.login,menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.action_signup:
            Intent i = new Intent(LoginActivity.this,SignUpActivity.class);
            startActivity(i);
    }
    return true;
}

public void doLogin(){
    background = new Thread(new Runnable(){
        @Override
        public void run(){
            try{
                Class.forName(Driver_Class);
                Connection con = DriverManager.getConnection(URL, USER, PASSWORD);
                Statement st = con.createStatement();
                ResultSet rs =st.executeQuery("select * from login where user_id='"+ uid +"' and password='"+ pass +"'");
                while(rs.next()){
                    count++;
                }
            }catch(Exception e){
                e.printStackTrace();
            }
            Runnable r=new Runnable() {
                   @Override
                   public void run() {
                       if(count==0){
                           Toast.makeText(getApplicationContext(), "Unsuccessful Login", Toast.LENGTH_SHORT).show();
                            TextView tv = (TextView)findViewById(R.id.textView4);
                            tv.setText("Wrong user_id or password");
                            tv.setTextColor(RED);  
                       }
                       else{
                           Intent i = new Intent(LoginActivity.this,NoticeActivity.class);
                           startActivity(i);
                       }
                   }
                };
                handler.post(r);
            }
        }
    );
    background.start();
}

}
package com.example.androidnotizer;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.util.SparseBooleanArray;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

public class StudentSignUpActivity extends Activity implements OnClickListener {

public static final String URL="jdbc:mysql://10.0.2.2/notizer";
public static final String USER="root";
public static final String PASSWORD="apple";
public static final String Driver_Class="com.mysql.jdbc.Driver";

Handler handler = new Handler();
Thread background;

Button button,combi;
ListView listView;
ArrayAdapter<String> adapter;
String fname,lname,mname,gender,mobile,designation,passPapers,roll,department,year;
int count=0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_student_sign_up);
    Intent intent =getIntent();
    fname = intent.getStringExtra("fname");
    mname = intent.getStringExtra("mname");
    lname = intent.getStringExtra("lname");
    gender = intent.getStringExtra("gender");
    mobile = intent.getStringExtra("mobile");
    designation = intent.getStringExtra("designation");
    roll = intent.getStringExtra("roll");
    department = intent.getStringExtra("department");
    year = intent.getStringExtra("year");
    findViewById();
    String[] sports = getResources().getStringArray(R.array.papers_array);
    adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice, sports);
    listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
    listView.setAdapter(adapter);
    button.setOnClickListener(this);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.student_sign_up, menu);
    return true;
}

private void findViewById() {
    listView = (ListView) findViewById(R.id.dept_listView1);
    button = (Button) findViewById(R.id.done);
}

@Override
public void onClick(View arg0) {
    SparseBooleanArray checked = listView.getCheckedItemPositions();
    passPapers="";
    for (int i = 0; i < checked.size(); i++) {
        int position = checked.keyAt(i);
        if (checked.valueAt(i))
            if((i+1) < checked.size()){
                passPapers=passPapers+String.valueOf(adapter.getItem(position))+",";
            }
            else{
                passPapers=passPapers+String.valueOf(adapter.getItem(position));
            }

    }
    doSignUp();
}

public void doSignUp(){
    Toast.makeText(getApplicationContext(),"Inside doSignUp()",Toast.LENGTH_LONG).show();
    background = new Thread(new Runnable(){
        @Override
        public void run(){
            try{
                Toast.makeText(getApplicationContext(),"Inside try",Toast.LENGTH_LONG).show();
                Class.forName(Driver_Class);
                Connection con = DriverManager.getConnection(URL, USER, PASSWORD);
                Statement st = con.createStatement();
                //st.executeUpdate("insert into student(roll_no,fname,mname,lname,gender,mobile_no,department,year,pass_papers,desigantion) values('"+ roll +"','"+ fname +"','"+ mname +"','"+ lname +"','"+ gender +"','"+ mobile +"','"+ department +"','"+ year +"','"+ passPapers +"','"+ designation +"')");
                st.executeUpdate("insert into login(user_id,password) values('"+ roll +"','"+ roll +"')");
                count=1;
            }catch(Exception e){
                count=0;
                e.printStackTrace();
                Toast.makeText(getApplicationContext(),e.toString(),Toast.LENGTH_LONG).show();
            }
            Runnable r=new Runnable() {
                   @Override
                   public void run() {
                       if(count==1){
                           Toast.makeText(getApplicationContext(), "Successful Sign Up\nYour user_id : " + roll + "\nand password : " + roll, Toast.LENGTH_LONG).show();
                           Intent i = new Intent(StudentSignUpActivity.this,NoticeActivity.class);
                           startActivity(i);
                       }
                       else{
                           Toast.makeText(getApplicationContext(), "Unsuccessful Sign Up\nTry Again", Toast.LENGTH_LONG).show();
                           Intent i = new Intent(StudentSignUpActivity.this,SignUpActivity.class);
                           startActivity(i);
                       }
                   }
                };
                handler.post(r);
            }
        }
    );
    background.start();
}

}
带活套问题的活动

package com.example.androidnotizer;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;


public class LoginActivity extends Activity {

public static final String URL="jdbc:mysql://10.0.2.2/notizer";
public static final String USER="root";
public static final String PASSWORD="apple";
public static final String Driver_Class="com.mysql.jdbc.Driver";
public static final int RED=-65536;

Handler handler = new Handler();
Thread background;
String uid,pass;
int count=0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    TextView tv = (TextView)findViewById(R.id.textView4);
    tv.setText("");
    Button login = (Button) findViewById(R.id.button1);
    login.setOnClickListener(new OnClickListener(){
        @Override
        public void onClick(View arg0) {
            EditText et1 = (EditText)findViewById(R.id.editText1);
            EditText et2 = (EditText)findViewById(R.id.editText2);
            uid=et1.getText().toString();
            pass=et2.getText().toString();
            TextView tv = (TextView)findViewById(R.id.textView4);
            tv.setText("");
            count=0;
            doLogin();
        }
    });

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.login,menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.action_signup:
            Intent i = new Intent(LoginActivity.this,SignUpActivity.class);
            startActivity(i);
    }
    return true;
}

public void doLogin(){
    background = new Thread(new Runnable(){
        @Override
        public void run(){
            try{
                Class.forName(Driver_Class);
                Connection con = DriverManager.getConnection(URL, USER, PASSWORD);
                Statement st = con.createStatement();
                ResultSet rs =st.executeQuery("select * from login where user_id='"+ uid +"' and password='"+ pass +"'");
                while(rs.next()){
                    count++;
                }
            }catch(Exception e){
                e.printStackTrace();
            }
            Runnable r=new Runnable() {
                   @Override
                   public void run() {
                       if(count==0){
                           Toast.makeText(getApplicationContext(), "Unsuccessful Login", Toast.LENGTH_SHORT).show();
                            TextView tv = (TextView)findViewById(R.id.textView4);
                            tv.setText("Wrong user_id or password");
                            tv.setTextColor(RED);  
                       }
                       else{
                           Intent i = new Intent(LoginActivity.this,NoticeActivity.class);
                           startActivity(i);
                       }
                   }
                };
                handler.post(r);
            }
        }
    );
    background.start();
}

}
package com.example.androidnotizer;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.util.SparseBooleanArray;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

public class StudentSignUpActivity extends Activity implements OnClickListener {

public static final String URL="jdbc:mysql://10.0.2.2/notizer";
public static final String USER="root";
public static final String PASSWORD="apple";
public static final String Driver_Class="com.mysql.jdbc.Driver";

Handler handler = new Handler();
Thread background;

Button button,combi;
ListView listView;
ArrayAdapter<String> adapter;
String fname,lname,mname,gender,mobile,designation,passPapers,roll,department,year;
int count=0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_student_sign_up);
    Intent intent =getIntent();
    fname = intent.getStringExtra("fname");
    mname = intent.getStringExtra("mname");
    lname = intent.getStringExtra("lname");
    gender = intent.getStringExtra("gender");
    mobile = intent.getStringExtra("mobile");
    designation = intent.getStringExtra("designation");
    roll = intent.getStringExtra("roll");
    department = intent.getStringExtra("department");
    year = intent.getStringExtra("year");
    findViewById();
    String[] sports = getResources().getStringArray(R.array.papers_array);
    adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice, sports);
    listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
    listView.setAdapter(adapter);
    button.setOnClickListener(this);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.student_sign_up, menu);
    return true;
}

private void findViewById() {
    listView = (ListView) findViewById(R.id.dept_listView1);
    button = (Button) findViewById(R.id.done);
}

@Override
public void onClick(View arg0) {
    SparseBooleanArray checked = listView.getCheckedItemPositions();
    passPapers="";
    for (int i = 0; i < checked.size(); i++) {
        int position = checked.keyAt(i);
        if (checked.valueAt(i))
            if((i+1) < checked.size()){
                passPapers=passPapers+String.valueOf(adapter.getItem(position))+",";
            }
            else{
                passPapers=passPapers+String.valueOf(adapter.getItem(position));
            }

    }
    doSignUp();
}

public void doSignUp(){
    Toast.makeText(getApplicationContext(),"Inside doSignUp()",Toast.LENGTH_LONG).show();
    background = new Thread(new Runnable(){
        @Override
        public void run(){
            try{
                Toast.makeText(getApplicationContext(),"Inside try",Toast.LENGTH_LONG).show();
                Class.forName(Driver_Class);
                Connection con = DriverManager.getConnection(URL, USER, PASSWORD);
                Statement st = con.createStatement();
                //st.executeUpdate("insert into student(roll_no,fname,mname,lname,gender,mobile_no,department,year,pass_papers,desigantion) values('"+ roll +"','"+ fname +"','"+ mname +"','"+ lname +"','"+ gender +"','"+ mobile +"','"+ department +"','"+ year +"','"+ passPapers +"','"+ designation +"')");
                st.executeUpdate("insert into login(user_id,password) values('"+ roll +"','"+ roll +"')");
                count=1;
            }catch(Exception e){
                count=0;
                e.printStackTrace();
                Toast.makeText(getApplicationContext(),e.toString(),Toast.LENGTH_LONG).show();
            }
            Runnable r=new Runnable() {
                   @Override
                   public void run() {
                       if(count==1){
                           Toast.makeText(getApplicationContext(), "Successful Sign Up\nYour user_id : " + roll + "\nand password : " + roll, Toast.LENGTH_LONG).show();
                           Intent i = new Intent(StudentSignUpActivity.this,NoticeActivity.class);
                           startActivity(i);
                       }
                       else{
                           Toast.makeText(getApplicationContext(), "Unsuccessful Sign Up\nTry Again", Toast.LENGTH_LONG).show();
                           Intent i = new Intent(StudentSignUpActivity.this,SignUpActivity.class);
                           startActivity(i);
                       }
                   }
                };
                handler.post(r);
            }
        }
    );
    background.start();
}

}
package com.example.androidnotizer;
导入java.sql.Connection;
导入java.sql.DriverManager;
导入java.sql.Statement;
导入android.app.Activity;
导入android.content.Intent;
导入android.os.Bundle;
导入android.os.Handler;
导入android.util.SparseBooleanArray;
导入android.view.Menu;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.ListView;
导入android.widget.Toast;
公共类StudentSignUpActivity扩展了活动实现OnClickListener{
公共静态最终字符串URL=“jdbc:mysql://10.0.2.2/notizer";
公共静态最终字符串USER=“root”;
公共静态最终字符串PASSWORD=“apple”;
公共静态最终字符串驱动程序\u Class=“com.mysql.jdbc.Driver”;
Handler=newhandler();
线程背景;
按钮,组合;
列表视图列表视图;
阵列适配器;
字符串fname、lname、mname、性别、手机、名称、护照、卷、部门、年份;
整数计数=0;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u student\u sign\u);
Intent=getIntent();
fname=intent.getStringExtra(“fname”);
mname=intent.getStringExtra(“mname”);
lname=intent.getStringExtra(“lname”);
性别=意图。getStringExtra(“性别”);
mobile=intent.getStringExtra(“移动”);
名称=意图。getStringExtra(“名称”);
滚动=意图。getStringExtra(“滚动”);
department=intent.getStringExtra(“department”);
年份=意向。getStringExtra(“年度”);
findViewById();
String[]sports=getResources().getStringArray(R.array.papers\u数组);
adapter=new ArrayAdapter(这是android.R.layout.simple\u list\u item\u multiple\u choice,sports);
listView.setChoiceMode(listView.CHOICE\u MODE\u MULTIPLE);
setAdapter(适配器);
setOnClickListener(此);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(右菜单。学生注册,菜单);
返回true;
}
私有void findViewById(){
listView=(listView)findViewById(R.id.dept\u listView1);
按钮=(按钮)findViewById(R.id.done);
}
@凌驾
公共void onClick(视图arg0){
SparseBooleanArray checked=listView.GetCheckEditePositions();
护照=”;
对于(int i=0;i
LogCat

12-10 06:49:48.823: E/AndroidRuntime(5021): FATAL EXCEPTION: Thread-344
12-10 06:49:48.823: E/AndroidRuntime(5021): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
12-10 06:49:48.823: E/AndroidRuntime(5021):     at android.os.Handler.<init>(Handler.java:197)
12-10 06:49:48.823: E/AndroidRuntime(5021):     at android.os.Handler.<init>(Handler.java:111)
12-10 06:49:48.823: E/AndroidRuntime(5021):     at android.widget.Toast$TN.<init>(Toast.java:324)
12-10 06:49:48.823: E/AndroidRuntime(5021):     at android.widget.Toast.<init>(Toast.java:91)
12-10 06:49:48.823: E/AndroidRuntime(5021):     at android.widget.Toast.makeText(Toast.java:238)
12-10 06:49:48.823: E/AndroidRuntime(5021):     at com.example.androidnotizer.StudentSignUpActivity$1.run(StudentSignUpActivity.java:104)
12-10 06:49:48.823: E/AndroidRuntime(5021):     at java.lang.Thread.run(Thread.java:841)
12-10 06:49:48.823:E/AndroidRuntime(5021):致命异常:线程344
12-10 06:49:48.823:E/AndroidRuntime(5021):java.lang.RuntimeException:无法在未调用Looper.prepare()的线程内创建处理程序
12-10 06:49:48.823:E/AndroidRuntime(5021):位于android.os.Handler.(Handler.java:197)
12-10 06:49:48.823:E/AndroidRuntime(5021):位于android.os.Handler.(Handler.java:111)
12-10 06:49:48.823:E/AndroidRuntime(5021):在android.widget.Toast$TN.(Toast.java:324)
12-10 06:49:48.823:E/AndroidRuntime(5021):在android.widget.Toast(Toast.java:91)
12-10 06:49:48.823:E/AndroidRuntime(5021):在android.widget.Toast.makeText(Toast.java:238)上
12