2016-03-27 7 views
0

In der ProgressDialog-Initialisierung wird angezeigt, dass LoginActivity.this keine einschließende Klasse ist. In onPostExecute() Methode Toast wird nicht ausgeführt und getApplicationContext() -Methode kann nicht gelöst werden.getApplicationContext() -Methode kann nicht aufgelöst werden, LoginActivity.this ist keine einschließende Klasse

public class LoginActivity extends AppCompatActivity { 

EditText et1,et2; 
Button b; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login2); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    et1=(EditText)findViewById(R.id.editText5); 
    et2=(EditText)findViewById(R.id.editText6); 
    b=(Button)findViewById(R.id.button2); 
} 
public void login(View view) 
{ 
    new BackgroundTask().execute(et1.getText().toString(),et2.getText().toString()); 
    Toast.makeText(this,"Button",Toast.LENGTH_LONG).show(); 
} 

} 

class Background extends AsyncTask<String, Integer, Integer> 
{ 
    ProgressDialog progressDialog=new ProgressDialog(LoginActivity.this);; 
    @Override 
    protected void onPreExecute() { 
    super.onPreExecute(); 
    progressDialog.setMessage("Processing"); 
    progressDialog.setTitle("Title"); 
    progressDialog.show(); 
} 

int check_point =0; 
String resp=""; 
@Override 
protected Integer doInBackground(String... params) { 
    try { 
     HttpClient client = new DefaultHttpClient(); 
     HttpPost post = new HttpPost("http://192.168.1.6/login.php"); 
     HttpResponse response = client.execute(post); 
     InputStream in = response.getEntity().getContent(); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
     String s; 
     while ((s = reader.readLine()) != null) { 
      resp=resp+s; 
      } 
    } 
    catch (Exception e) 
    { 
     System.out.print(e); 
    } 

    return check_point; 
} 

@Override 
protected void onPostExecute(Integer integer) { 
    super.onPostExecute(integer); 
    progressDialog.dismiss(); 
    Toast.makeText(getApplicationContext(),"ACtivity",Toast.LENGTH_LONG).show(); 
} 
} 
+0

Wie wird Login (Ansicht Ansicht) auf die tatsächliche Button-Instanz verbunden? Bitte verwenden Sie Log anstelle von Toast & System.out.print. Warum initialisierst du progressDialog aus dem onPreExecute? Wenn Sie bedenken, dass die AsyncTask eine innere Klasse von LoginActivity ist, warum initialisieren Sie progressDialog mit dem Aktivitätskontext und verwenden Sie den Anwendungskontext onPostExecute? – randomuser

+0

was soll ich dann tun? –

+0

ich denke, mit Keyword „this“ anstelle von „LoginActivity.this“ sollte das Problem –

Antwort

1

Die Klasse Hintergrund ist keine innere Klasse. Es befindet sich außerhalb des Bereichs von LoginActivity. Das ist der Grund, warum Sie diesen Fehler bekommen. Versuchen Sie es als eine innere Klasse zu bewegen.

classs ParentClass{ 
    //some fields, methods whatevenr 

    class InnerClass{ 
     // this is inner 
    } 
} 

class OutSideScope{ 
    // this is outside of the scope of the Parent Class 
} 

Glücklich Codierung;)

+0

Oh vielen Dank beheben. Ich wusste das nicht und machte mir weiter Gedanken darüber, warum mein Code nicht funktionierte. Vielen Dank. –

Verwandte Themen