将活动内容带到对话框
问题描述:
我想制作一个自定义对话框,在该对话框中我想通过按钮进行呼叫,并通过无按钮取消对话框。但在对话框中的文本视图中,我想要确认对话框显示“Call:number”。我在主Activity中从用户那里得到了这个否,并且我无法将这个No带给Dialog。我怎样才能做到这一点? 我尝试了意图和共享首选项,但都是徒劳的。给我建议。将活动内容带到对话框
我在主活动类中编写了以下代码。
package com.example.deepak.phone_call;
import android.Manifest;
import android.app.Activity;
import android.app.Dialog;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity implements View.OnClickListener {
Button b;
EditText edittext1;
SharedPreferences sharedPreferences;
SharedPreferences.Editor edit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b = (Button) findViewById(R.id.button);
b.setOnClickListener(this);
edittext1=(EditText)findViewById(R.id.edittext1);
String number=edittext1.getText().toString();
sharedPreferences = getSharedPreferences("mydata",MODE_PRIVATE);
edit= sharedPreferences.edit();
edit.putString("s1",number);
edit.commit();
// Intent intent = new Intent(this, phone_call.class);
// intent.putExtra("s1",number);
}
private void phoneDialog(){
Dialog dialog = new Dialog(MainActivity.this);
dialog.setContentView(R.layout.phone_call);
dialog.setTitle("Call:");
dialog.show();
}
@Override
public void onClick(View v) {
phoneDialog();
}
}
和下面的代码,我在其中设置了对话框。
import android.app.Activity;
import android.app.Dialog;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
/**
* Created by Deepak on 7/5/2016.
*/
public class phone_call extends Activity implements View.OnClickListener {
Button button2,button3;
TextView editText;
SharedPreferences shredpreference;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.phone_call);
button2= (Button) findViewById(R.id.button2);
button2.setOnClickListener(this);
button3= (Button) findViewById(R.id.button3);
button3.setOnClickListener(this);
editText = (TextView) findViewById(R.id.editText);
//Intent intent = getIntent();
//String s1= intent.getStringExtra("s1");
shredpreference = getSharedPreferences("mydata",0);
String s1= shredpreference.getString("s1","null");
editText.setText("Call"+ s1+":");
}
@Override
public void onClick(View v) {
//Intent intent = getIntent();
// String s1= intent.getStringExtra("s1");
shredpreference = getSharedPreferences("mydata",0);
String s1= shredpreference.getString("s1","null");
switch (v.getId()) {
case R.id.button2:
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:" +s1));//change the number
try{
startActivity(callIntent);
}
catch (android.content.ActivityNotFoundException ex){
Toast.makeText(getApplicationContext(),"yourActivity is not founded",Toast.LENGTH_SHORT).show();
}
break;
case R.id.button3:
finishActivity(100);
break;
}
}
}
答
你已经把代码在错误的地方存储的值,因此,它是在OnCreate()methos它不会随时拍摄值,
所以从onCreate()方法,并删除下面两行如下所示将它写入onCLick()方法。
@Override
public void onClick(View v)
{
String number = edittext1.getText().toString();
edit.putString("s1",number);
edit.commit();
phoneDialog();
}